<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>107691</bug_id>
          
          <creation_ts>2013-01-23 07:37:05 -0800</creation_ts>
          <short_desc>REGRESSION(r140518): Broke Chromium Win build (gyp file not updated) (Requested by arv on #webkit).</short_desc>
          <delta_ts>2013-01-23 10:43:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>105847</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>kenneth</cc>
    
    <cc>noam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>814194</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-23 07:37:05 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/140518 broke the build:
Broke Chromium Win build (gyp file not updated) (Requested by arv on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814196</commentid>
    <comment_count>1</comment_count>
      <attachid>184230</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-23 07:37:37 -0800</bug_when>
    <thetext>Created attachment 184230
ROLLOUT of r140518

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814210</commentid>
    <comment_count>2</comment_count>
      <attachid>184230</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2013-01-23 07:53:37 -0800</bug_when>
    <thetext>Comment on attachment 184230
ROLLOUT of r140518

I&apos;ll let noam update the gyp file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814215</commentid>
    <comment_count>3</comment_count>
      <attachid>184237</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-23 08:00:56 -0800</bug_when>
    <thetext>Created attachment 184237
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814349</commentid>
    <comment_count>4</comment_count>
      <attachid>184237</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-23 10:43:39 -0800</bug_when>
    <thetext>Comment on attachment 184237
Patch for landing

Clearing flags on attachment: 184237

Committed r140547: &lt;http://trac.webkit.org/changeset/140547&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814350</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-23 10:43:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184230</attachid>
            <date>2013-01-23 07:37:37 -0800</date>
            <delta_ts>2013-01-23 08:00:48 -0800</delta_ts>
            <desc>ROLLOUT of r140518</desc>
            <filename>bug-107691-20130123153429.patch</filename>
            <type>text/plain</type>
            <size>57957</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M3ZTU3YzdhNTNhZTNj
NTRiN2ZiYzUyMzY1NDZkMTM2ZGRmY2E2NS4uOTc0ZTRiMmQwYzMxMjI3NzE4ZTdiOTQ4NDIzNTcy
NTExNGM3ZDk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAxLTIzICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTQwNTE4LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xNDA1MTgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzY5MQorCisgICAgICAgIEJyb2tlIENocm9taXVtIFdpbiBidWlsZCAoZ3lw
IGZpbGUgbm90IHVwZGF0ZWQpIChSZXF1ZXN0ZWQgYnkKKyAgICAgICAgYXJ2IG9uICN3ZWJraXQp
LgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUVm
bC5jbWFrZToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAoU2hhcmVkR0xEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTERhdGE6OlNoYXJlZEdMRGF0YTo6U2hh
cmVkR0xEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd0JvcmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1NvbGlkQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6b3B0aW9uc0ZvckZpbHRlclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckdMOjpkcmF3RmlsdGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdMOjpiZWdpbkNsaXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3Bw
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wb3NpdGluZ0xvZ0Vu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpzZXRNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OmdldExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjp+VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0U2hhZGVyU3BlYyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyU2hhZGVyTWFuYWdlcjo6VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6On5UZXh0dXJlTWFwcGVyU2hh
ZGVyTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdl
cjo6Z2V0U2hhZGVyUHJvZ3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0p
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OnByb2dyYW1J
RCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y3JlYXRl
KToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdl
cik6CisKIDIwMTMtMDEtMjMgIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxNDAxMDEpOiBjYXVzZWQgZGVidWcgYXNzZXJ0cyBp
biBmYXN0L2Zvcm1zL2Fzc29jaWF0ZWQtZWxlbWVudC1jcmFzaC5odG1sIGFuZCBodG1sNWxpYi9y
dW4tdGVtcGxhdGUuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZWMwODVm
MTkxMWY5MzBjN2IzM2ZmZDZmOTVkMWY2OGQ5MjE1YmI5YS4uYWNlZTQ5MjMxMDc3NDRiNjM0ZDYx
NDU3OTI0ODc0MThjZjQ3ZjRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC02
NDE5LDggKzY0MTksOCBAQCBpZiBVU0VfVEVYVFVSRV9NQVBQRVJfQ0FJUk8KIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvdGV4
bWFwL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW1UZXh0dXJlTWFwcGVyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwIFwKLQlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW0uaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTaGFkZXJNYW5hZ2VyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyVHJhbnNmb3JtLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGY1
MTc5YzYwMTVjMWUwMzBjZTU3NDQxZTI2OGNiY2IwOTAwMmI5NjIuLmE2YmJhMGZlZGIzZTIyZjJh
ZDg5MDA5ODFhMGNjYzUzMzYxZGZiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0z
MTcsNyArMzE3LDcgQEAgaWYgKFdURl9VU0VfM0RfR1JBUEhJQ1MpCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuY3BwCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCi0gICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAK
KyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5h
Z2VyLmNwcAogICAgICkKIAogICAgIGlmIChXVEZfVVNFX0VHTCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDA3
MWJhY2VhMjNmZTllMWY1YTBjYTdjOTdhNmIwYThjNjMwMGExZGUuLjQwNzEzNjIwNmE1NjcxYjMw
ODVkMGMxNDRmNTRkNmU3MDUzMGUyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNDA0Miw3ICs0MDQyLDcg
QEAgdXNlPygzRF9HUkFQSElDUykgewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGls
aW5nRGF0YS5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMz
RE9wZW5HTC5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5oIFwKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtLmgKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTaGFkZXJNYW5hZ2VyLmgKIAogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAgXApAQCAtNDA1NSw3ICs0MDU1LDcgQEAg
dXNlPygzRF9HUkFQSElDUykgewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgXAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKIAogICAgIElOQ0xVREVQ
QVRIICs9ICQkUFdEL3BsYXRmb3JtL2dyYXBoaWNzL2dwdQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CmluZGV4IGE5MDExODg4YTJiMTk5YTNkZmZiZGUyOTYyMTRkYWRmZTZlOTc2NmQuLmI4MjkxOGVj
MDJhZWJmYzgyMjNmMjM4NDI1NmJlMzljM2Q3OTk0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJMZW5ndGhG
dW5jdGlvbnMuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclNoYWRlck1h
bmFnZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CkBAIC04NSwyMiArODUsMTAgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRHTERhdGEoY29udGV4dCkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bT4gZ2V0U2hhZGVyUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBv
cHRpb25zKQotICAgICAgICB7Ci0gICAgICAgICAgICBIYXNoTWFwPFRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtOjpPcHRpb25zLCBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+ID46
Oml0ZXJhdG9yIGl0ID0gbV9wcm9ncmFtcy5maW5kKG9wdGlvbnMpOwotICAgICAgICAgICAgaWYg
KGl0ICE9IG1fcHJvZ3JhbXMuZW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1
ZTsKLQotICAgICAgICAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9n
cmFtID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShtX2NvbnRleHQsIG9wdGlv
bnMpOwotICAgICAgICAgICAgbV9wcm9ncmFtcy5hZGQob3B0aW9ucywgcHJvZ3JhbSk7Ci0gICAg
ICAgICAgICByZXR1cm4gcHJvZ3JhbTsKLSAgICAgICAgfQotCi0gICAgICAgIEhhc2hNYXA8VGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wdGlvbnMsIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbT4gPiBtX3Byb2dyYW1zOwotICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IG1fY29udGV4dDsKKyAgICAgICAgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIgdGV4dHVy
ZU1hcHBlclNoYWRlck1hbmFnZXI7CiAKICAgICAgICAgZXhwbGljaXQgU2hhcmVkR0xEYXRhKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQotICAgICAgICAgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKKyAgICAgICAgICAgIDogdGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIoY29udGV4dCkKICAg
ICAgICAgewogICAgICAgICAgICAgZ2xDb250ZXh0RGF0YU1hcCgpLmFkZChjb250ZXh0LT5wbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCksIHRoaXMpOwogICAgICAgICB9CkBAIC0zMTAsNyArMjk4
LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9y
LCBmbG9hdCB3aWR0aCwgY29uc3QgRmxvYXRSZWMKICAgICBpZiAoY2xpcFN0YWNrKCkuY3VycmVu
dCgpLnNjaXNzb3JCb3guaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xEYXRh
KCkuZ2V0U2hhZGVyUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6U29saWRDb2xv
cik7CisgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtID0gZGF0
YSgpLnNoYXJlZEdMRGF0YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRlclBy
b2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlNvbGlkQ29sb3IpOwogICAgIG1fY29u
dGV4dDNELT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW1JRCgpKTsKIAogICAgIGZsb2F0IHIs
IGcsIGIsIGE7CkBAIC00MTAsMTUgKzM5OCwxNSBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJh
d1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSQog
ICAgICAgICAmJiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKICAgICAgICAgJiYgIW1vZGVsVmll
d01hdHJpeC5tYXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKIAotICAgIFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbTo6VGV4dHVyZTsKKyAgICBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6T3B0
aW9ucyBvcHRpb25zID0gVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlRleHR1cmU7CiAgICAg
aWYgKG1hc2tlZCkKLSAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6TWFzazsKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6
TWFzazsKICAgICBpZiAodXNlUmVjdCkKLSAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbTo6UmVjdDsKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hh
ZGVyTWFuYWdlcjo6UmVjdDsKICAgICBpZiAob3BhY2l0eSA8IDEpCi0gICAgICAgIG9wdGlvbnMg
fD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wYWNpdHk7CisgICAgICAgIG9wdGlvbnMg
fD0gVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6Ok9wYWNpdHk7CiAgICAgaWYgKHVzZUFudGlh
bGlhc2luZykgewotICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
OjpBbnRpYWxpYXNpbmc7CisgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlck1h
bmFnZXI6OkFudGlhbGlhc2luZzsKICAgICAgICAgZmxhZ3MgfD0gU2hvdWxkQW50aWFsaWFzOwog
ICAgIH0KIApAQCAtNDI2LDIwICs0MTQsMjAgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdU
ZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEkKICAg
ICAgICAgZmxhZ3MgfD0gU2hvdWxkQmxlbmQ7CiAKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW0+IHByb2dyYW07Ci0gICAgcHJvZ3JhbSA9IGRhdGEoKS5zaGFyZWRHTERhdGEo
KS5nZXRTaGFkZXJQcm9ncmFtKG9wdGlvbnMpOworICAgIHByb2dyYW0gPSBkYXRhKCkuc2hhcmVk
R0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShvcHRp
b25zKTsKICAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4
dHVyZSwgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9w
YWNpdHksIG1hc2tUZXh0dXJlKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdTb2xp
ZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1hdHJpeCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIEZsYWdzIGZsYWdzID0gMDsKLSAg
ICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zID0gVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OlNvbGlkQ29sb3I7CisgICAgVGV4dHVyZU1hcHBlclNoYWRlck1h
bmFnZXI6Ok9wdGlvbnMgb3B0aW9ucyA9IFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpTb2xp
ZENvbG9yOwogICAgIGlmICghbWF0cml4Lm1hcFF1YWQocmVjdCkuaXNSZWN0aWxpbmVhcigpKSB7
Ci0gICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkFudGlhbGlh
c2luZzsKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6QW50
aWFsaWFzaW5nOwogICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZCB8IFNob3VsZEFudGlhbGlh
czsKICAgICB9CiAKLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHByb2dy
YW0gPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuZ2V0U2hhZGVyUHJvZ3JhbShvcHRpb25zKTsKKyAg
ICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHByb2dyYW0gPSBkYXRhKCkuc2hh
cmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShv
cHRpb25zKTsKICAgICBtX2NvbnRleHQzRC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtSUQo
KSk7CiAKICAgICBmbG9hdCByLCBnLCBiLCBhOwpAQCAtNzA1LDMwICs2OTMsMzAgQEAgdm9pZCBC
aXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVj
dCYgdGFyZ2V0UmVjdCwgY28KIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIAotc3RhdGljIFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnNGb3JGaWx0ZXJUeXBlKEZp
bHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlLCB1bnNpZ25lZCBwYXNzKQorc3RhdGlj
IFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpPcHRpb25zIG9wdGlvbnNGb3JGaWx0ZXJUeXBl
KEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlLCB1bnNpZ25lZCBwYXNzKQogewog
ICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6
Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpHcmF5c2NhbGVGaWx0ZXI7CisgICAgICAgIHJldHVy
biBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFk
ZXJNYW5hZ2VyOjpHcmF5c2NhbGVGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNF
UElBOgotICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmUg
fCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6U2VwaWFGaWx0ZXI7CisgICAgICAgIHJldHVy
biBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFk
ZXJNYW5hZ2VyOjpTZXBpYUZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJB
VEU6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpTYXR1cmF0ZUZpbHRlcjsKKyAgICAgICAgcmV0
dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNo
YWRlck1hbmFnZXI6OlNhdHVyYXRlRmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpI
VUVfUk9UQVRFOgotICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRl
eHR1cmUgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6SHVlUm90YXRlRmlsdGVyOworICAg
ICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlRleHR1cmUgfCBUZXh0dXJl
TWFwcGVyU2hhZGVyTWFuYWdlcjo6SHVlUm90YXRlRmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpJTlZFUlQ6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpJbnZlcnRGaWx0ZXI7Cisg
ICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6VGV4dHVyZSB8IFRleHR1
cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpJbnZlcnRGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OkJSSUdIVE5FU1M6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpCcmlnaHRuZXNzRmls
dGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlRleHR1cmUg
fCBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6QnJpZ2h0bmVzc0ZpbHRlcjsKICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpDb250
cmFzdEZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpU
ZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OkNvbnRyYXN0RmlsdGVyOwogICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOgotICAgICAgICByZXR1cm4gVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OlRleHR1cmUgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6
T3BhY2l0eUZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2Vy
OjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6Ok9wYWNpdHlGaWx0ZXI7CiAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6Qmx1ckZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBw
ZXJTaGFkZXJNYW5hZ2VyOjpCbHVyRmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpE
Uk9QX1NIQURPVzoKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpB
bHBoYUJsdXIKLSAgICAgICAgICAgIHwgKHBhc3MgPyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6Q29udGVudFRleHR1cmUgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6U29saWRDb2xv
cjogMCk7CisgICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6QWxwaGFC
bHVyCisgICAgICAgICAgICB8IChwYXNzID8gVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OkNv
bnRlbnRUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlNvbGlkQ29sb3I6IDAp
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBy
ZXR1cm4gMDsKQEAgLTkyMiw4ICs5MTAsOCBAQCBib29sIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1Vz
aW5nQ3VzdG9tRmlsdGVyKEJpdG1hcFRleHR1cmUmIHRhcmdldCwgY29uc3QgQml0bWFwVAogdm9p
ZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdGaWx0ZXJlZChjb25zdCBCaXRtYXBUZXh0dXJlJiBzYW1w
bGVyLCBjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3Bl
cmF0aW9uJiBmaWx0ZXIsIGludCBwYXNzKQogewogICAgIC8vIEZvciBzdGFuZGFyZCBmaWx0ZXJz
LCB3ZSBhbHdheXMgZHJhdyB0aGUgd2hvbGUgdGV4dHVyZSB3aXRob3V0IHRyYW5zZm9ybWF0aW9u
cy4KLSAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zID0gb3B0
aW9uc0ZvckZpbHRlclR5cGUoZmlsdGVyLmdldE9wZXJhdGlvblR5cGUoKSwgcGFzcyk7Ci0gICAg
UmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtID0gZGF0YSgpLnNoYXJl
ZEdMRGF0YSgpLmdldFNoYWRlclByb2dyYW0ob3B0aW9ucyk7CisgICAgVGV4dHVyZU1hcHBlclNo
YWRlck1hbmFnZXI6Ok9wdGlvbnMgb3B0aW9ucyA9IG9wdGlvbnNGb3JGaWx0ZXJUeXBlKGZpbHRl
ci5nZXRPcGVyYXRpb25UeXBlKCksIHBhc3MpOworICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS50ZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlci5nZXRTaGFkZXJQcm9ncmFtKG9wdGlvbnMpOwogICAgIEFTU0VSVChwcm9n
cmFtKTsKIAogICAgIHByZXBhcmVGaWx0ZXJQcm9ncmFtKHByb2dyYW0uZ2V0KCksIGZpbHRlciwg
cGFzcywgc2FtcGxlci5jb250ZW50U2l6ZSgpLCBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0
dXJlR0wmPihjb250ZW50VGV4dHVyZSkuaWQoKSk7CkBAIC0xMTIyLDcgKzExMTAsNyBAQCB2b2lk
IFRleHR1cmVNYXBwZXJHTDo6YmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
b2RlbFZpZXdNYXRyaXgsIGNvbgogCiAgICAgZGF0YSgpLmluaXRpYWxpemVTdGVuY2lsKCk7CiAK
LSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHByb2dyYW0gPSBkYXRhKCku
c2hhcmVkR0xEYXRhKCkuZ2V0U2hhZGVyUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6U29saWRDb2xvcik7CisgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBw
cm9ncmFtID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2Vy
LmdldFNoYWRlclByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlNvbGlkQ29sb3Ip
OwogCiAgICAgbV9jb250ZXh0M0QtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOwog
ICAgIG1fY29udGV4dDNELT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwcm9ncmFtLT52ZXJ0ZXhM
b2NhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBhZjM0M2I0YTdmNGM0ZDAxOTcwM2NkMjY1MzAyMjYxYjRkYjFhNzEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsNDEyIEBACisvKgorIENvcHly
aWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJTaGFkZXJNYW5h
Z2VyLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJF
X01BUFBFUikKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CisKKyNkZWZpbmUgU1RSSU5HSUZZKC4uLikgI19fVkFfQVJHU19fCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBib29sIGNvbXBvc2l0aW5nTG9n
RW5hYmxlZCgpCit7CisjaWYgIUxPR19ESVNBQkxFRAorICAgIHJldHVybiBMb2dDb21wb3NpdGlu
Zy5zdGF0ZSA9PSBXVEZMb2dDaGFubmVsT247CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZgorfQorCitUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW0oUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgY29uc3QgU3Ry
aW5nJiB2ZXJ0ZXgsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnQpCisgICAgOiBtX2NvbnRleHQoY29u
dGV4dCkKK3sKKyAgICBtX3ZlcnRleFNoYWRlciA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKEdy
YXBoaWNzQ29udGV4dDNEOjpWRVJURVhfU0hBREVSKTsKKyAgICBtX2ZyYWdtZW50U2hhZGVyID0g
bV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQUdNRU5UX1NIQURF
Uik7CisgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UobV92ZXJ0ZXhTaGFkZXIsIHZlcnRleCk7
CisgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UobV9mcmFnbWVudFNoYWRlciwgZnJhZ21lbnQp
OworICAgIG1faWQgPSBtX2NvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKKyAgICBtX2NvbnRleHQt
PmNvbXBpbGVTaGFkZXIobV92ZXJ0ZXhTaGFkZXIpOworICAgIG1fY29udGV4dC0+Y29tcGlsZVNo
YWRlcihtX2ZyYWdtZW50U2hhZGVyKTsKKyAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX2lk
LCBtX3ZlcnRleFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5hdHRhY2hTaGFkZXIobV9pZCwgbV9m
cmFnbWVudFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShtX2lkKTsKKworICAg
IGlmICghY29tcG9zaXRpbmdMb2dFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChtX2NvbnRleHQtPmdldEVycm9yKCkgPT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKQor
ICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgbG9nID0gbV9jb250ZXh0LT5nZXRTaGFkZXJJ
bmZvTG9nKG1fdmVydGV4U2hhZGVyKTsKKyAgICBMT0coQ29tcG9zaXRpbmcsICJWZXJ0ZXggc2hh
ZGVyIGxvZzogJXNcbiIsIGxvZy51dGY4KCkuZGF0YSgpKTsKKyAgICBsb2cgPSBtX2NvbnRleHQt
PmdldFNoYWRlckluZm9Mb2cobV9mcmFnbWVudFNoYWRlcik7CisgICAgTE9HKENvbXBvc2l0aW5n
LCAiRnJhZ21lbnQgc2hhZGVyIGxvZzogJXNcbiIsIGxvZy51dGY4KCkuZGF0YSgpKTsKKyAgICBs
b2cgPSBtX2NvbnRleHQtPmdldFByb2dyYW1JbmZvTG9nKG1faWQpOworICAgIExPRyhDb21wb3Np
dGluZywgIlByb2dyYW0gbG9nOiAlc1xuIiwgbG9nLnV0ZjgoKS5kYXRhKCkpOworfQorCit2b2lk
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpzZXRNYXRyaXgoR0MzRHVpbnQgbG9jYXRpb24s
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCit7CisgICAgR0MzRGZsb2F0IG1h
dHJpeEFzRmxvYXRzW10gPSB7CisgICAgICAgIG1hdHJpeC5tMTEoKSwgbWF0cml4Lm0xMigpLCBt
YXRyaXgubTEzKCksIG1hdHJpeC5tMTQoKSwKKyAgICAgICAgbWF0cml4Lm0yMSgpLCBtYXRyaXgu
bTIyKCksIG1hdHJpeC5tMjMoKSwgbWF0cml4Lm0yNCgpLAorICAgICAgICBtYXRyaXgubTMxKCks
IG1hdHJpeC5tMzIoKSwgbWF0cml4Lm0zMygpLCBtYXRyaXgubTM0KCksCisgICAgICAgIG1hdHJp
eC5tNDEoKSwgbWF0cml4Lm00MigpLCBtYXRyaXgubTQzKCksIG1hdHJpeC5tNDQoKQorICAgIH07
CisKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIDEsIGZhbHNlLCBt
YXRyaXhBc0Zsb2F0cyk7Cit9CisKK0dDM0R1aW50IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
OjpnZXRMb2NhdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZhcmlhYmxlVHlwZSB0eXBl
KQoreworICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBHQzNEdWludD46Oml0ZXJhdG9yIGl0ID0g
bV92YXJpYWJsZXMuZmluZChuYW1lKTsKKyAgICBpZiAoaXQgIT0gbV92YXJpYWJsZXMuZW5kKCkp
CisgICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisKKyAgICBHQzNEdWludCBsb2NhdGlvbiA9IDA7
CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBVbmlmb3JtVmFyaWFibGU6CisgICAgICAg
IGxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9pZCwgbmFtZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQXR0cmliVmFyaWFibGU6CisgICAgICAgIGxvY2F0aW9u
ID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX2lkLCBuYW1lKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIG1fdmFyaWFibGVzLmFkZChuYW1lLCBsb2NhdGlvbik7Cisg
ICAgcmV0dXJuIGxvY2F0aW9uOworfQorCitUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6flRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKCkKK3sKKyAgICBQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW1JRCA9IG1faWQ7CisgICAgaWYgKCFwcm9ncmFtSUQpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fY29udGV4dC0+ZGV0YWNoU2hhZGVyKHByb2dyYW1JRCwgbV92ZXJ0ZXhTaGFkZXIpOworICAg
IG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKG1fdmVydGV4U2hhZGVyKTsKKyAgICBtX2NvbnRleHQt
PmRldGFjaFNoYWRlcihwcm9ncmFtSUQsIG1fZnJhZ21lbnRTaGFkZXIpOworICAgIG1fY29udGV4
dC0+ZGVsZXRlU2hhZGVyKG1fZnJhZ21lbnRTaGFkZXIpOworICAgIG1fY29udGV4dC0+ZGVsZXRl
UHJvZ3JhbShwcm9ncmFtSUQpOworfQorCisjZGVmaW5lIEdMU0xfRElSRUNUSVZFKC4uLikgIiMi
I19fVkFfQVJHU19fIlxuIgorc3RhdGljIGNvbnN0IGNoYXIqIHZlcnRleFRlbXBsYXRlID0KKyAg
ICBTVFJJTkdJRlkoCisgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfdmVydGV4OworICAgICAgICB1
bmlmb3JtIG1hdDQgdV9tb2RlbFZpZXdNYXRyaXg7CisgICAgICAgIHVuaWZvcm0gbWF0NCB1X3By
b2plY3Rpb25NYXRyaXg7CisgICAgICAgIHVuaWZvcm0gbWF0NCB1X3RleHR1cmVTcGFjZU1hdHJp
eDsKKworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdmFyeWluZyB2
ZWMyIHZfbWFza1RleENvb3JkOworICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50aWFsaWFzOwor
CisgICAgICAgIHZvaWQgbm9vcChpbm91dCB2ZWMyIGR1bW15UGFyYW1ldGVyKSB7IH0KKworICAg
ICAgICB2ZWM0IHRvVmlld3BvcnRTcGFjZSh2ZWMyIHBvcykgeyByZXR1cm4gdmVjNChwb3MsIDAu
LCAxLikgKiB1X21vZGVsVmlld01hdHJpeDsgfQorCisgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24g
cmVsaWVzIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgd2UgZ2V0IGVkZ2UgdHJpYW5nbGVzIHdpdGgg
Y29udHJvbCBwb2ludHMsCisgICAgICAgIC8vIGEgY29udHJvbCBwb2ludCBiZWluZyB0aGUgbmVh
cmVzdCBwb2ludCB0byB0aGUgY29vcmRpbmF0ZSB0aGF0IGlzIG9uIHRoZSBlZGdlLgorICAgICAg
ICB2b2lkIGFwcGx5QW50aWFsaWFzaW5nKGlub3V0IHZlYzIgcG9zaXRpb24pCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIFdlIGNvdW50IG9uIHRoZSBmYWN0IHRoYXQgcXVhZCBwYXNzZWQgaW4g
aXMgYWx3YXlzIGEgdW5pdCByZWN0LAorICAgICAgICAgICAgLy8gYW5kIHRoZSB0cmFuc2Zvcm1h
dGlvbiBtYXRyaXggYXBwbGllcyB0aGUgcmVhbCByZWN0LgorICAgICAgICAgICAgY29uc3QgdmVj
MiBjZW50ZXIgPSB2ZWMyKDAuNSwgMC41KTsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0IGFudGlh
bGlhc0luZmxhdGlvbkRpc3RhbmNlID0gMS47CisKKyAgICAgICAgICAgIC8vIFdlIHBhc3MgdGhl
IGNvbnRyb2wgcG9pbnQgYXMgdGhlIHp3IGNvb3JkaW5hdGVzIG9mIHRoZSB2ZXJ0ZXguCisgICAg
ICAgICAgICAvLyBUaGUgY29udHJvbCBwb2ludCBpcyB0aGUgcG9pbnQgb24gdGhlIGVkZ2UgY2xv
c2VzdCB0byB0aGUgY3VycmVudCBwb3NpdGlvbi4KKyAgICAgICAgICAgIC8vIFRoZSBjb250cm9s
IHBvaW50IGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgYW50aWFsaWFzIHZhbHVlLgorICAgICAgICAg
ICAgdmVjMiBjb250cm9sUG9pbnQgPSBhX3ZlcnRleC56dzsKKworICAgICAgICAgICAgLy8gRmly
c3Qgd2UgY2FsY3VsYXRlIHRoZSBkaXN0YW5jZSBpbiB2aWV3cG9ydCBzcGFjZS4KKyAgICAgICAg
ICAgIHZlYzQgY2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVzID0gdG9WaWV3cG9ydFNwYWNlKGNl
bnRlcik7CisgICAgICAgICAgICB2ZWM0IGNvbnRyb2xQb2ludEluVmlld3BvcnRDb29yZGluYXRl
cyA9IHRvVmlld3BvcnRTcGFjZShjb250cm9sUG9pbnQpOworICAgICAgICAgICAgZmxvYXQgdmll
d3BvcnRTcGFjZURpc3RhbmNlID0gZGlzdGFuY2UoY2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVz
LCBjb250cm9sUG9pbnRJblZpZXdwb3J0Q29vcmRpbmF0ZXMpOworCisgICAgICAgICAgICAvLyBX
ZSBhZGQgdGhlIGluZmxhdGlvbiBkaXN0YW5jZSB0byB0aGUgY29tcHV0ZWQgZGlzdGFuY2UsIGFu
ZCBjb21wdXRlIHRoZSByYXRpby4KKyAgICAgICAgICAgIGZsb2F0IGluZmxhdGlvblJhdGlvID0g
KHZpZXdwb3J0U3BhY2VEaXN0YW5jZSArIGFudGlhbGlhc0luZmxhdGlvbkRpc3RhbmNlKSAvIHZp
ZXdwb3J0U3BhY2VEaXN0YW5jZTsKKworICAgICAgICAgICAgLy8gdl9hbnRpYWxpYXMgbmVlZHMg
dG8gYmUgMCBmb3IgdGhlIG91dGVyIGVkZ2UgYW5kIDEuIGZvciB0aGUgaW5uZXIgZWRnZS4KKyAg
ICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250cm9sUG9pbnQgaXMgZXF1YWwgdG8gdGhlIHBvc2l0
aW9uIGluIHRoZSBlZGdlIHZlcnRpY2VzLCB0aGUgdmFsdWUgaXMgYWx3YXlzIDAgZm9yIHRob3Nl
LgorICAgICAgICAgICAgLy8gRm9yIHRoZSBjZW50ZXIgcG9pbnQsIHRoZSBkaXN0YW5jZSBpcyBh
bHdheXMgMC41LCBzbyB3ZSBub3JtYWxpemUgdG8gMS4gYnkgbXVsdGlwbHlpbmcgYnkgMi4KKyAg
ICAgICAgICAgIC8vIEJ5IG11bHRwbHlpbmcgYnkgaW5mbGF0aW9uUmF0aW8gYW5kIGRpdmlkaW5n
IGJ5IChpbmZsYXRpb25SYXRpbyAtIDEpLAorICAgICAgICAgICAgLy8gV2UgbWFrZSBzdXJlIHRo
YXQgdGhlIHZhcnlpbmcgaW50ZXJwb2xhdGVzIGJldHdlZW4gMCAob3V0ZXIgZWRnZSksIDEgKGlu
bmVyIGVkZ2UpIGFuZCBuID4gMSAoY2VudGVyKS4KKyAgICAgICAgICAgIHZfYW50aWFsaWFzID0g
ZGlzdGFuY2UoY29udHJvbFBvaW50LCBwb3NpdGlvbikgKiAyLiAqIGluZmxhdGlvblJhdGlvIC8g
KGluZmxhdGlvblJhdGlvIC0gMS4pOworCisgICAgICAgICAgICAvLyBOb3cgaW5mbGF0ZSB0aGUg
YWN0dWFsIHBvc2l0aW9uLiBCeSB1c2luZyB0aGlzIGZvcm11bGEgaW5zdGVhZCBvZiBpbmZsYXRp
bmcgcG9zaXRpb24gZGlyZWN0bHksCisgICAgICAgICAgICAvLyB3ZSBlbnN1cmUgdGhhdCB0aGUg
Y2VudGVyIHZlcnRleCBpcyBuZXZlciBpbmZsYXRlZC4KKyAgICAgICAgICAgIHBvc2l0aW9uID0g
Y2VudGVyICsgKHBvc2l0aW9uIC0gY2VudGVyKSAqIGluZmxhdGlvblJhdGlvOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlYzIg
cG9zaXRpb24gPSBhX3ZlcnRleC54eTsKKyAgICAgICAgICAgIGFwcGx5QW50aWFsaWFzaW5nSWZO
ZWVkZWQocG9zaXRpb24pOworCisgICAgICAgICAgICAvLyBUaGUgdGV4dHVyZSBwb3NpdGlvbiBu
ZWVkcyB0byBiZSBjbGFtcGVkIHRvIDAuLjEgYmVmb3JlIHRoZSB0ZXh0dXJlIG1hdHJpeCBpcyBh
cHBsaWVkLgorICAgICAgICAgICAgdmVjNCBjbGFtcGVkUG9zaXRpb24gPSBjbGFtcCh2ZWM0KHBv
c2l0aW9uLCAwLiwgMS4pLCAwLiwgMS4pOworICAgICAgICAgICAgdl90ZXhDb29yZCA9ICh1X3Rl
eHR1cmVTcGFjZU1hdHJpeCAqIGNsYW1wZWRQb3NpdGlvbikueHk7CisKKyAgICAgICAgICAgIHZf
bWFza1RleENvb3JkID0gcG9zaXRpb247CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHVfcHJv
amVjdGlvbk1hdHJpeCAqIHVfbW9kZWxWaWV3TWF0cml4ICogdmVjNChwb3NpdGlvbiwgMC4sIDEu
KTsKKyAgICAgICAgfQorICAgICk7CisKKyNkZWZpbmUgUkVDVF9URVhUVVJFX0RJUkVDVElWRSBc
CisgICAgR0xTTF9ESVJFQ1RJVkUoaWZkZWYgRU5BQkxFX1JlY3QpIFwKKyAgICAgICAgR0xTTF9E
SVJFQ1RJVkUoZGVmaW5lIFNhbXBsZXJUeXBlIHNhbXBsZXIyRFJlY3QpIFwKKyAgICAgICAgR0xT
TF9ESVJFQ1RJVkUoZGVmaW5lIFNhbXBsZXJGdW5jdGlvbiB0ZXh0dXJlMkRSZWN0KSBcCisgICAg
R0xTTF9ESVJFQ1RJVkUoZWxzZSkgXAorICAgICAgICBHTFNMX0RJUkVDVElWRShkZWZpbmUgU2Ft
cGxlclR5cGUgc2FtcGxlcjJEKSBcCisgICAgICAgIEdMU0xfRElSRUNUSVZFKGRlZmluZSBTYW1w
bGVyRnVuY3Rpb24gdGV4dHVyZTJEKSBcCisgICAgR0xTTF9ESVJFQ1RJVkUoZW5kaWYpCisKKyNk
ZWZpbmUgRU5BQkxFX0FQUExJRVIoTmFtZSkgIiNkZWZpbmUgRU5BQkxFXyIjTmFtZSJcbiNkZWZp
bmUgYXBwbHkiI05hbWUiSWZOZWVkZWQgYXBwbHkiI05hbWUiXG4iCisjZGVmaW5lIERJU0FCTEVf
QVBQTElFUihOYW1lKSAiI2RlZmluZSBhcHBseSIjTmFtZSJJZk5lZWRlZCBub29wXG4iCisjZGVm
aW5lIEJMVVJfQ09OU1RBTlRTIFwKKyAgICBHTFNMX0RJUkVDVElWRShkZWZpbmUgR0FVU1NJQU5f
S0VSTkVMX0hBTEZfV0lEVEggMTEpIFwKKyAgICBHTFNMX0RJUkVDVElWRShkZWZpbmUgR0FVU1NJ
QU5fS0VSTkVMX1NURVAgMC4yKQorCisKK3N0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRlbXBs
YXRlID0KKyAgICBSRUNUX1RFWFRVUkVfRElSRUNUSVZFCisgICAgQkxVUl9DT05TVEFOVFMKKyAg
ICBTVFJJTkdJRlkoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB1
bmlmb3JtIFNhbXBsZXJUeXBlIHNfc2FtcGxlcjsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQg
c19tYXNrOworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX2NvbnRlbnRUZXh0dXJlOworICAg
ICAgICB1bmlmb3JtIGZsb2F0IHVfb3BhY2l0eTsKKyAgICAgICAgdmFyeWluZyBmbG9hdCB2X2Fu
dGlhbGlhczsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHZhcnlp
bmcgdmVjMiB2X21hc2tUZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBmbG9hdCB1X2ZpbHRlckFt
b3VudDsKKyAgICAgICAgdW5pZm9ybSB2ZWMyIHVfYmx1clJhZGl1czsKKyAgICAgICAgdW5pZm9y
bSB2ZWMyIHVfc2hhZG93T2Zmc2V0OworICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvcjsKKyAg
ICAgICAgdW5pZm9ybSBmbG9hdCB1X2dhdXNzaWFuS2VybmVsW0dBVVNTSUFOX0tFUk5FTF9IQUxG
X1dJRFRIXTsKKworICAgICAgICB2b2lkIG5vb3AoaW5vdXQgdmVjNCBkdW1teVBhcmFtZXRlcikg
eyB9CisKKyAgICAgICAgZmxvYXQgYW50aWFsaWFzKCkgeyByZXR1cm4gc21vb3Roc3RlcCh2X2Fu
dGlhbGlhcywgMC4sIDEuKTsgfQorCisgICAgICAgIHZvaWQgYXBwbHlUZXh0dXJlKGlub3V0IHZl
YzQgY29sb3IpIHsgY29sb3IgPSBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyLCB2X3RleENvb3Jk
KTsgfQorICAgICAgICB2b2lkIGFwcGx5T3BhY2l0eShpbm91dCB2ZWM0IGNvbG9yKSB7IGNvbG9y
ICo9IHVfb3BhY2l0eTsgfQorICAgICAgICB2b2lkIGFwcGx5QW50aWFsaWFzaW5nKGlub3V0IHZl
YzQgY29sb3IpIHsgY29sb3IgKj0gYW50aWFsaWFzKCk7IH0KKyAgICAgICAgdm9pZCBhcHBseU1h
c2soaW5vdXQgdmVjNCBjb2xvcikgeyBjb2xvciAqPSB0ZXh0dXJlMkQoc19tYXNrLCB2X21hc2tU
ZXhDb29yZCkuYTsgfQorCisgICAgICAgIHZvaWQgYXBwbHlHcmF5c2NhbGVGaWx0ZXIoaW5vdXQg
dmVjNCBjb2xvcikKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0gMS4wIC0g
dV9maWx0ZXJBbW91bnQ7CisgICAgICAgICAgICBjb2xvciA9IHZlYzQoKDAuMjEyNiArIDAuNzg3
NCAqIGFtb3VudCkgKiBjb2xvci5yICsgKDAuNzE1MiAtIDAuNzE1MiAqIGFtb3VudCkgKiBjb2xv
ci5nICsgKDAuMDcyMiAtIDAuMDcyMiAqIGFtb3VudCkgKiBjb2xvci5iLAorICAgICAgICAgICAg
ICAgICgwLjIxMjYgLSAwLjIxMjYgKiBhbW91bnQpICogY29sb3IuciArICgwLjcxNTIgKyAwLjI4
NDggKiBhbW91bnQpICogY29sb3IuZyArICgwLjA3MjIgLSAwLjA3MjIgKiBhbW91bnQpICogY29s
b3IuYiwKKyAgICAgICAgICAgICAgICAoMC4yMTI2IC0gMC4yMTI2ICogYW1vdW50KSAqIGNvbG9y
LnIgKyAoMC43MTUyIC0gMC43MTUyICogYW1vdW50KSAqIGNvbG9yLmcgKyAoMC4wNzIyICsgMC45
Mjc4ICogYW1vdW50KSAqIGNvbG9yLmIsCisgICAgICAgICAgICAgICAgY29sb3IuYSk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIGFwcGx5U2VwaWFGaWx0ZXIoaW5vdXQgdmVjNCBjb2xvcikK
KyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0gMS4wIC0gdV9maWx0ZXJBbW91
bnQ7CisgICAgICAgICAgICBjb2xvciA9IHZlYzQoKDAuMzkzICsgMC42MDcgKiBhbW91bnQpICog
Y29sb3IuciArICgwLjc2OSAtIDAuNzY5ICogYW1vdW50KSAqIGNvbG9yLmcgKyAoMC4xODkgLSAw
LjE4OSAqIGFtb3VudCkgKiBjb2xvci5iLAorICAgICAgICAgICAgICAgICgwLjM0OSAtIDAuMzQ5
ICogYW1vdW50KSAqIGNvbG9yLnIgKyAoMC42ODYgKyAwLjMxNCAqIGFtb3VudCkgKiBjb2xvci5n
ICsgKDAuMTY4IC0gMC4xNjggKiBhbW91bnQpICogY29sb3IuYiwKKyAgICAgICAgICAgICAgICAo
MC4yNzIgLSAwLjI3MiAqIGFtb3VudCkgKiBjb2xvci5yICsgKDAuNTM0IC0gMC41MzQgKiBhbW91
bnQpICogY29sb3IuZyArICgwLjEzMSArIDAuODY5ICogYW1vdW50KSAqIGNvbG9yLmIsCisgICAg
ICAgICAgICAgICAgY29sb3IuYSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGFwcGx5U2F0
dXJhdGVGaWx0ZXIoaW5vdXQgdmVjNCBjb2xvcikKKyAgICAgICAgeworICAgICAgICAgICAgY29s
b3IgPSB2ZWM0KCgwLjIxMyArIDAuNzg3ICogdV9maWx0ZXJBbW91bnQpICogY29sb3IuciArICgw
LjcxNSAtIDAuNzE1ICogdV9maWx0ZXJBbW91bnQpICogY29sb3IuZyArICgwLjA3MiAtIDAuMDcy
ICogdV9maWx0ZXJBbW91bnQpICogY29sb3IuYiwKKyAgICAgICAgICAgICAgICAoMC4yMTMgLSAw
LjIxMyAqIHVfZmlsdGVyQW1vdW50KSAqIGNvbG9yLnIgKyAoMC43MTUgKyAwLjI4NSAqIHVfZmls
dGVyQW1vdW50KSAqIGNvbG9yLmcgKyAoMC4wNzIgLSAwLjA3MiAqIHVfZmlsdGVyQW1vdW50KSAq
IGNvbG9yLmIsCisgICAgICAgICAgICAgICAgKDAuMjEzIC0gMC4yMTMgKiB1X2ZpbHRlckFtb3Vu
dCkgKiBjb2xvci5yICsgKDAuNzE1IC0gMC43MTUgKiB1X2ZpbHRlckFtb3VudCkgKiBjb2xvci5n
ICsgKDAuMDcyICsgMC45MjggKiB1X2ZpbHRlckFtb3VudCkgKiBjb2xvci5iLAorICAgICAgICAg
ICAgICAgIGNvbG9yLmEpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBhcHBseUh1ZVJvdGF0
ZUZpbHRlcihpbm91dCB2ZWM0IGNvbG9yKQorICAgICAgICB7CisgICAgICAgICAgICBmbG9hdCBw
aSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisgICAgICAgICAgICBmbG9hdCBjID0gY29zKHVf
ZmlsdGVyQW1vdW50ICogcGkgLyAxODAuMCk7CisgICAgICAgICAgICBmbG9hdCBzID0gc2luKHVf
ZmlsdGVyQW1vdW50ICogcGkgLyAxODAuMCk7CisgICAgICAgICAgICBjb2xvciA9IHZlYzQoY29s
b3IuciAqICgwLjIxMyArIGMgKiAwLjc4NyAtIHMgKiAwLjIxMykgKyBjb2xvci5nICogKDAuNzE1
IC0gYyAqIDAuNzE1IC0gcyAqIDAuNzE1KSArIGNvbG9yLmIgKiAoMC4wNzIgLSBjICogMC4wNzIg
KyBzICogMC45MjgpLAorICAgICAgICAgICAgICAgIGNvbG9yLnIgKiAoMC4yMTMgLSBjICogMC4y
MTMgKyBzICogMC4xNDMpICsgY29sb3IuZyAqICgwLjcxNSArIGMgKiAwLjI4NSArIHMgKiAwLjE0
MCkgKyBjb2xvci5iICogKDAuMDcyIC0gYyAqIDAuMDcyIC0gcyAqIDAuMjgzKSwKKyAgICAgICAg
ICAgICAgICBjb2xvci5yICogKDAuMjEzIC0gYyAqIDAuMjEzIC0gcyAqIDAuNzg3KSArICBjb2xv
ci5nICogKDAuNzE1IC0gYyAqIDAuNzE1ICsgcyAqIDAuNzE1KSArIGNvbG9yLmIgKiAoMC4wNzIg
KyBjICogMC45MjggKyBzICogMC4wNzIpLAorICAgICAgICAgICAgICAgIGNvbG9yLmEpOworICAg
ICAgICB9CisKKyAgICAgICAgZmxvYXQgaW52ZXJ0KGZsb2F0IG4pIHsgcmV0dXJuICgxLjAgLSBu
KSAqIHVfZmlsdGVyQW1vdW50ICsgbiAqICgxLjAgLSB1X2ZpbHRlckFtb3VudCk7IH0KKyAgICAg
ICAgdm9pZCBhcHBseUludmVydEZpbHRlcihpbm91dCB2ZWM0IGNvbG9yKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb2xvciA9IHZlYzQoaW52ZXJ0KGNvbG9yLnIpLCBpbnZlcnQoY29sb3IuZyks
IGludmVydChjb2xvci5iKSwgY29sb3IuYSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGFw
cGx5QnJpZ2h0bmVzc0ZpbHRlcihpbm91dCB2ZWM0IGNvbG9yKQorICAgICAgICB7CisgICAgICAg
ICAgICBjb2xvciA9IHZlYzQoY29sb3IucmdiICogKDEuMCArIHVfZmlsdGVyQW1vdW50KSwgY29s
b3IuYSk7CisgICAgICAgIH0KKworICAgICAgICBmbG9hdCBjb250cmFzdChmbG9hdCBuKSB7IHJl
dHVybiAobiAtIDAuNSkgKiB1X2ZpbHRlckFtb3VudCArIDAuNTsgfQorICAgICAgICB2b2lkIGFw
cGx5Q29udHJhc3RGaWx0ZXIoaW5vdXQgdmVjNCBjb2xvcikKKyAgICAgICAgeworICAgICAgICAg
ICAgY29sb3IgPSB2ZWM0KGNvbnRyYXN0KGNvbG9yLnIpLCBjb250cmFzdChjb2xvci5nKSwgY29u
dHJhc3QoY29sb3IuYiksIGNvbG9yLmEpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBhcHBs
eU9wYWNpdHlGaWx0ZXIoaW5vdXQgdmVjNCBjb2xvcikKKyAgICAgICAgeworICAgICAgICAgICAg
Y29sb3IgPSB2ZWM0KGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIsIGNvbG9yLmEgKiB1X2ZpbHRl
ckFtb3VudCk7CisgICAgICAgIH0KKworICAgICAgICB2ZWM0IHNhbXBsZUNvbG9yQXRSYWRpdXMo
ZmxvYXQgcmFkaXVzKQorICAgICAgICB7CisgICAgICAgICAgICB2ZWMyIGNvb3JkID0gdl90ZXhD
b29yZCArIHJhZGl1cyAqIHVfYmx1clJhZGl1czsKKyAgICAgICAgICAgIHJldHVybiBTYW1wbGVy
RnVuY3Rpb24oc19zYW1wbGVyLCBjb29yZCkgKiBmbG9hdChjb29yZC54ID4gMC4gJiYgY29vcmQu
eSA+IDAuICYmIGNvb3JkLnggPCAxLiAmJiBjb29yZC55IDwgMS4pOworICAgICAgICB9CisKKyAg
ICAgICAgZmxvYXQgc2FtcGxlQWxwaGFBdFJhZGl1cyhmbG9hdCByYWRpdXMpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZlYzIgY29vcmQgPSB2X3RleENvb3JkIC0gdV9zaGFkb3dPZmZzZXQgKyBy
YWRpdXMgKiB1X2JsdXJSYWRpdXM7CisgICAgICAgICAgICByZXR1cm4gU2FtcGxlckZ1bmN0aW9u
KHNfc2FtcGxlciwgY29vcmQpLmEgKiBmbG9hdChjb29yZC54ID4gMC4gJiYgY29vcmQueSA+IDAu
ICYmIGNvb3JkLnggPCAxLiAmJiBjb29yZC55IDwgMS4pOworICAgICAgICB9CisKKyAgICAgICAg
dm9pZCBhcHBseUJsdXJGaWx0ZXIoaW5vdXQgdmVjNCBjb2xvcikKKyAgICAgICAgeworICAgICAg
ICAgICAgdmVjNCB0b3RhbCA9IHNhbXBsZUNvbG9yQXRSYWRpdXMoMC4pICogdV9nYXVzc2lhbktl
cm5lbFswXTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgR0FVU1NJQU5fS0VSTkVM
X0hBTEZfV0lEVEg7IGkrKykgeworICAgICAgICAgICAgICAgIHRvdGFsICs9IHNhbXBsZUNvbG9y
QXRSYWRpdXMoZmxvYXQoaSkgKiBHQVVTU0lBTl9LRVJORUxfU1RFUCkgKiB1X2dhdXNzaWFuS2Vy
bmVsW2ldOworICAgICAgICAgICAgICAgIHRvdGFsICs9IHNhbXBsZUNvbG9yQXRSYWRpdXMoZmxv
YXQoLTEgKiBpKSAqIEdBVVNTSUFOX0tFUk5FTF9TVEVQKSAqIHVfZ2F1c3NpYW5LZXJuZWxbaV07
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbG9yID0gdG90YWw7CisgICAgICAgIH0K
KworICAgICAgICB2b2lkIGFwcGx5QWxwaGFCbHVyKGlub3V0IHZlYzQgY29sb3IpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGZsb2F0IHRvdGFsID0gc2FtcGxlQWxwaGFBdFJhZGl1cygwLikgKiB1
X2dhdXNzaWFuS2VybmVsWzBdOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBHQVVT
U0lBTl9LRVJORUxfSEFMRl9XSURUSDsgaSsrKSB7CisgICAgICAgICAgICAgICAgdG90YWwgKz0g
c2FtcGxlQWxwaGFBdFJhZGl1cyhmbG9hdChpKSAqIEdBVVNTSUFOX0tFUk5FTF9TVEVQKSAqIHVf
Z2F1c3NpYW5LZXJuZWxbaV07CisgICAgICAgICAgICAgICAgdG90YWwgKz0gc2FtcGxlQWxwaGFB
dFJhZGl1cyhmbG9hdCgtMSAqIGkpICogR0FVU1NJQU5fS0VSTkVMX1NURVApICogdV9nYXVzc2lh
bktlcm5lbFtpXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29sb3IgKj0gdG90YWw7
CisgICAgICAgIH0KKworICAgICAgICB2ZWM0IHNvdXJjZU92ZXIodmVjNCBzcmMsIHZlYzQgZHN0
KSB7IHJldHVybiBzcmMgKyBkc3QgKiAoMS4gLSBkc3QuYSk7IH0KKworICAgICAgICB2b2lkIGFw
cGx5Q29udGVudFRleHR1cmUoaW5vdXQgdmVjNCBjb2xvcikKKyAgICAgICAgeworICAgICAgICAg
ICAgdmVjNCBjb250ZW50Q29sb3IgPSB0ZXh0dXJlMkQoc19jb250ZW50VGV4dHVyZSwgdl90ZXhD
b29yZCk7CisgICAgICAgICAgICBjb2xvciA9IHNvdXJjZU92ZXIoY29udGVudENvbG9yLCBjb2xv
cik7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGFwcGx5U29saWRDb2xvcihpbm91dCB2ZWM0
IGNvbG9yKSB7IGNvbG9yICo9IHVfY29sb3I7IH0KKworICAgICAgICB2b2lkIG1haW4odm9pZCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmVjNCBjb2xvciA9IHZlYzQoMS4sIDEuLCAxLiwgMS4p
OworICAgICAgICAgICAgYXBwbHlUZXh0dXJlSWZOZWVkZWQoY29sb3IpOworICAgICAgICAgICAg
YXBwbHlTb2xpZENvbG9ySWZOZWVkZWQoY29sb3IpOworICAgICAgICAgICAgYXBwbHlBbnRpYWxp
YXNpbmdJZk5lZWRlZChjb2xvcik7CisgICAgICAgICAgICBhcHBseU1hc2tJZk5lZWRlZChjb2xv
cik7CisgICAgICAgICAgICBhcHBseU9wYWNpdHlJZk5lZWRlZChjb2xvcik7CisgICAgICAgICAg
ICBhcHBseUdyYXlzY2FsZUZpbHRlcklmTmVlZGVkKGNvbG9yKTsKKyAgICAgICAgICAgIGFwcGx5
U2VwaWFGaWx0ZXJJZk5lZWRlZChjb2xvcik7CisgICAgICAgICAgICBhcHBseVNhdHVyYXRlRmls
dGVySWZOZWVkZWQoY29sb3IpOworICAgICAgICAgICAgYXBwbHlIdWVSb3RhdGVGaWx0ZXJJZk5l
ZWRlZChjb2xvcik7CisgICAgICAgICAgICBhcHBseUludmVydEZpbHRlcklmTmVlZGVkKGNvbG9y
KTsKKyAgICAgICAgICAgIGFwcGx5QnJpZ2h0bmVzc0ZpbHRlcklmTmVlZGVkKGNvbG9yKTsKKyAg
ICAgICAgICAgIGFwcGx5Q29udHJhc3RGaWx0ZXJJZk5lZWRlZChjb2xvcik7CisgICAgICAgICAg
ICBhcHBseU9wYWNpdHlGaWx0ZXJJZk5lZWRlZChjb2xvcik7CisgICAgICAgICAgICBhcHBseUJs
dXJGaWx0ZXJJZk5lZWRlZChjb2xvcik7CisgICAgICAgICAgICBhcHBseUFscGhhQmx1cklmTmVl
ZGVkKGNvbG9yKTsKKyAgICAgICAgICAgIGFwcGx5Q29udGVudFRleHR1cmVJZk5lZWRlZChjb2xv
cik7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKKyAgICAgICAgfQorICAgICk7
CisKKworc3RhdGljIHZvaWQgZ2V0U2hhZGVyU3BlYyhUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdl
cjo6T3B0aW9ucyBvcHRpb25zLCBTdHJpbmcmIHZlcnRleFNvdXJjZSwgU3RyaW5nJiBmcmFnbWVu
dFNvdXJjZSkKK3sKKworICAgIFN0cmluZ0J1aWxkZXIgc2hhZGVyQnVpbGRlcjsKKyNkZWZpbmUg
U0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKEFwcGxpZXIpIFwKKyAgICBzaGFkZXJCdWlsZGVyLmFw
cGVuZChcCisgICAgICAgIChvcHRpb25zICYgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OkFw
cGxpZXIpID8gRU5BQkxFX0FQUExJRVIoQXBwbGllcikgOiBESVNBQkxFX0FQUExJRVIoQXBwbGll
cikpCisKKyAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoVGV4dHVyZSk7CisgICAgU0VUX0FQ
UExJRVJfRlJPTV9PUFRJT05TKFJlY3QpOworICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhT
b2xpZENvbG9yKTsKKyAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoT3BhY2l0eSk7CisgICAg
U0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKE1hc2spOworICAgIFNFVF9BUFBMSUVSX0ZST01fT1BU
SU9OUyhBbnRpYWxpYXNpbmcpOworICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhHcmF5c2Nh
bGVGaWx0ZXIpOworICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhTZXBpYUZpbHRlcik7Cisg
ICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFNhdHVyYXRlRmlsdGVyKTsKKyAgICBTRVRfQVBQ
TElFUl9GUk9NX09QVElPTlMoSHVlUm90YXRlRmlsdGVyKTsKKyAgICBTRVRfQVBQTElFUl9GUk9N
X09QVElPTlMoQnJpZ2h0bmVzc0ZpbHRlcik7CisgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05T
KENvbnRyYXN0RmlsdGVyKTsKKyAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoSW52ZXJ0Rmls
dGVyKTsKKyAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoT3BhY2l0eUZpbHRlcik7CisgICAg
U0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKEJsdXJGaWx0ZXIpOworICAgIFNFVF9BUFBMSUVSX0ZS
T01fT1BUSU9OUyhBbHBoYUJsdXIpOworICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhDb250
ZW50VGV4dHVyZSk7CisgICAgU3RyaW5nQnVpbGRlciB2ZXJ0ZXhCdWlsZGVyOworICAgIHZlcnRl
eEJ1aWxkZXIuYXBwZW5kKHNoYWRlckJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgdmVydGV4QnVp
bGRlci5hcHBlbmQodmVydGV4VGVtcGxhdGUpOworICAgIHNoYWRlckJ1aWxkZXIuYXBwZW5kKGZy
YWdtZW50VGVtcGxhdGUpOworICAgIHZlcnRleFNvdXJjZSA9IHZlcnRleEJ1aWxkZXIudG9TdHJp
bmcoKTsKKyAgICBmcmFnbWVudFNvdXJjZSA9IHNoYWRlckJ1aWxkZXIudG9TdHJpbmcoKTsKK30K
KworVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2Vy
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCit7
Cit9CisKK1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjp+VGV4dHVyZU1hcHBlclNoYWRlck1h
bmFnZXIoKQoreworfQorCitQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBU
ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6Z2V0U2hhZGVyUHJvZ3JhbShPcHRpb25zIG9wdGlv
bnMpCit7CisgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1NYXA6Oml0ZXJhdG9yIGl0ID0g
bV9wcm9ncmFtcy5maW5kKG9wdGlvbnMpOworICAgIGlmIChpdCAhPSBtX3Byb2dyYW1zLmVuZCgp
KQorICAgICAgICByZXR1cm4gaXQtPnZhbHVlOworCisgICAgU3RyaW5nIHZlcnRleFNoYWRlcjsK
KyAgICBTdHJpbmcgZnJhZ21lbnRTaGFkZXI7CisgICAgZ2V0U2hhZGVyU3BlYyhvcHRpb25zLCB2
ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKTsKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW0+IHByb2dyYW0gPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y3JlYXRl
KG1fY29udGV4dCwgdmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcik7CisgICAgbV9wcm9ncmFt
cy5hZGQob3B0aW9ucywgcHJvZ3JhbSk7CisgICAgcmV0dXJuIHByb2dyYW07Cit9Cit9OworCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmYxNzQ5ODNkZGM1ZTY2NDE3OThkODk5ZDY5YzRkZWVmYWU1NmZmNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlci5oCkBAIC0wLDAgKzEsMTIyIEBACisvKgorIENvcHlyaWdodCAoQykgMjAx
MiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyBDb3B5cmln
aHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcl9oCisjZGVmaW5lIFRleHR1cmVNYXBwZXJTaGFk
ZXJNYW5hZ2VyX2gKKworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisjZGVmaW5lIFRFWE1BUF9ERUNMQVJFX1ZBUklBQkxFKEFjY2Vzc29y
LCBOYW1lLCBUeXBlKSBHQzNEdWludCBBY2Nlc3NvciMjTG9jYXRpb24oKSB7IHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcgbmFtZShOYW1lKTsgcmV0dXJuIGdldExvY2F0aW9uKG5hbWUsIFR5cGUp
OyB9CisjZGVmaW5lIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0oQWNjZXNzb3IpIFRFWE1BUF9ERUNM
QVJFX1ZBUklBQkxFKEFjY2Vzc29yLCAidV8iI0FjY2Vzc29yLCBVbmlmb3JtVmFyaWFibGUpCisj
ZGVmaW5lIFRFWE1BUF9ERUNMQVJFX0FUVFJJQlVURShBY2Nlc3NvcikgVEVYTUFQX0RFQ0xBUkVf
VkFSSUFCTEUoQWNjZXNzb3IsICJhXyIjQWNjZXNzb3IsIEF0dHJpYlZhcmlhYmxlKQorI2RlZmlu
ZSBURVhNQVBfREVDTEFSRV9TQU1QTEVSKEFjY2Vzc29yKSBURVhNQVBfREVDTEFSRV9WQVJJQUJM
RShBY2Nlc3NvciwgInNfIiNBY2Nlc3NvciwgVW5pZm9ybVZhcmlhYmxlKQorCitjbGFzcyBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtPiB7CitwdWJsaWM6CisgICAgUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtSUQo
KSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQo
KSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVydGV4LCBjb25zdCBTdHJpbmcmIGZyYWdtZW50
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbShjb250ZXh0LCB2ZXJ0ZXgsIGZyYWdtZW50KSk7CisgICAgfQorCisgICAgdmlydHVh
bCB+VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0oKTsKKworICAgIFRFWE1BUF9ERUNMQVJFX0FU
VFJJQlVURSh2ZXJ0ZXgpCisKKyAgICBURVhNQVBfREVDTEFSRV9VTklGT1JNKG1vZGVsVmlld01h
dHJpeCkKKyAgICBURVhNQVBfREVDTEFSRV9VTklGT1JNKHByb2plY3Rpb25NYXRyaXgpCisgICAg
VEVYTUFQX0RFQ0xBUkVfVU5JRk9STSh0ZXh0dXJlU3BhY2VNYXRyaXgpCisgICAgVEVYTUFQX0RF
Q0xBUkVfVU5JRk9STShvcGFjaXR5KQorICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0oY29sb3Ip
CisgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShleHBhbmRlZFF1YWRFZGdlc0luU2NyZWVuU3Bh
Y2UpCisgICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExFUihzYW1wbGVyKQorICAgIFRFWE1BUF9ERUNM
QVJFX1NBTVBMRVIobWFzaykKKworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICBURVhNQVBf
REVDTEFSRV9VTklGT1JNKGZpbHRlckFtb3VudCkKKyAgICBURVhNQVBfREVDTEFSRV9VTklGT1JN
KGdhdXNzaWFuS2VybmVsKQorICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0oYmx1clJhZGl1cykK
KyAgICBURVhNQVBfREVDTEFSRV9VTklGT1JNKHNoYWRvd09mZnNldCkKKyAgICBURVhNQVBfREVD
TEFSRV9TQU1QTEVSKGNvbnRlbnRUZXh0dXJlKQorI2VuZGlmCisKKyAgICB2b2lkIHNldE1hdHJp
eChHQzNEdWludCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKworcHJpdmF0ZToKKyAg
ICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGNvbnN0IFN0cmluZyYgZnJhZ21l
bnRTaGFkZXJTb3VyY2UpOworICAgIFBsYXRmb3JtM0RPYmplY3QgbV92ZXJ0ZXhTaGFkZXI7Cisg
ICAgUGxhdGZvcm0zRE9iamVjdCBtX2ZyYWdtZW50U2hhZGVyOworCisgICAgZW51bSBWYXJpYWJs
ZVR5cGUgeyBVbmlmb3JtVmFyaWFibGUsIEF0dHJpYlZhcmlhYmxlIH07CisgICAgR0MzRHVpbnQg
Z2V0TG9jYXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiwgVmFyaWFibGVUeXBlKTsKKworICAgIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIFBsYXRmb3JtM0RPYmplY3Qg
bV9pZDsKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgR0MzRHVpbnQ+IG1fdmFyaWFibGVzOwor
fTsKKworY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIgeworcHVibGljOgorICAgIGVu
dW0gT3B0aW9uIHsKKyAgICAgICAgVGV4dHVyZSAgICAgICAgICA9IDFMIDw8IDAsCisgICAgICAg
IFJlY3QgICAgICAgICAgICAgPSAxTCA8PCAxLAorICAgICAgICBTb2xpZENvbG9yICAgICAgID0g
MUwgPDwgMiwKKyAgICAgICAgT3BhY2l0eSAgICAgICAgICA9IDFMIDw8IDMsCisgICAgICAgIE1h
c2sgICAgICAgICAgICAgPSAxTCA8PCA0LAorICAgICAgICBBbnRpYWxpYXNpbmcgICAgID0gMUwg
PDwgNSwKKyAgICAgICAgR3JheXNjYWxlRmlsdGVyICA9IDFMIDw8IDYsCisgICAgICAgIFNlcGlh
RmlsdGVyICAgICAgPSAxTCA8PCA3LAorICAgICAgICBTYXR1cmF0ZUZpbHRlciAgID0gMUwgPDwg
OCwKKyAgICAgICAgSHVlUm90YXRlRmlsdGVyICA9IDFMIDw8IDksCisgICAgICAgIEJyaWdodG5l
c3NGaWx0ZXIgPSAxTCA8PCAxMCwKKyAgICAgICAgQ29udHJhc3RGaWx0ZXIgICA9IDFMIDw8IDEx
LAorICAgICAgICBJbnZlcnRGaWx0ZXIgICAgID0gMUwgPDwgMTIsCisgICAgICAgIE9wYWNpdHlG
aWx0ZXIgICAgPSAxTCA8PCAxMywKKyAgICAgICAgQmx1ckZpbHRlciAgICAgICA9IDFMIDw8IDE0
LAorICAgICAgICBBbHBoYUJsdXIgICAgICAgID0gMUwgPDwgMTUsCisgICAgICAgIENvbnRlbnRU
ZXh0dXJlICAgPSAxTCA8PCAxNgorICAgIH07CisKKyAgICB0eXBlZGVmIHVuc2lnbmVkIE9wdGlv
bnM7CisKKyAgICBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcigpIHsgfQorICAgIGV4cGxpY2l0
IFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgdmly
dHVhbCB+VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIoKTsKKworICAgIFBhc3NSZWZQdHI8VGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IGdldFNoYWRlclByb2dyYW0oT3B0aW9ucyk7CisKK3By
aXZhdGU6CisgICAgdHlwZWRlZiBIYXNoTWFwPE9wdGlvbnMsIFJlZlB0cjxUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbT4gPiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU1hcDsKKyAgICBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU1hcCBtX3Byb2dyYW1zOworICAgIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gbV9jb250ZXh0OworfTsKKworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBUZXh0
dXJlTWFwcGVyU2hhZGVyTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMwYzJiMDJjMmU0NzMy
OTI3NTNjYzMzZjM3MjU0YjA3YzY4OTcwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzkwICsw
LDAgQEAKLS8qCi0gQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQotIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi0gVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW0uaCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQotI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgot
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKLQotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotI2RlZmluZSBTVFJJTkdJRlkoLi4u
KSAjX19WQV9BUkdTX18KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIGJv
b2wgY29tcG9zaXRpbmdMb2dFbmFibGVkKCkKLXsKLSNpZiAhTE9HX0RJU0FCTEVECi0gICAgcmV0
dXJuIExvZ0NvbXBvc2l0aW5nLnN0YXRlID09IFdURkxvZ0NoYW5uZWxPbjsKLSNlbHNlCi0gICAg
cmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLVRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnRleCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCkKLSAg
ICA6IG1fY29udGV4dChjb250ZXh0KQotewotICAgIG1fdmVydGV4U2hhZGVyID0gbV9jb250ZXh0
LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIpOwotICAgIG1f
ZnJhZ21lbnRTaGFkZXIgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBR01FTlRfU0hBREVSKTsKLSAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShtX3ZlcnRl
eFNoYWRlciwgdmVydGV4KTsKLSAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShtX2ZyYWdtZW50
U2hhZGVyLCBmcmFnbWVudCk7Ci0gICAgbV9pZCA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgp
OwotICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcihtX3ZlcnRleFNoYWRlcik7Ci0gICAgbV9j
b250ZXh0LT5jb21waWxlU2hhZGVyKG1fZnJhZ21lbnRTaGFkZXIpOwotICAgIG1fY29udGV4dC0+
YXR0YWNoU2hhZGVyKG1faWQsIG1fdmVydGV4U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmF0dGFj
aFNoYWRlcihtX2lkLCBtX2ZyYWdtZW50U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmxpbmtQcm9n
cmFtKG1faWQpOwotCi0gICAgaWYgKCFjb21wb3NpdGluZ0xvZ0VuYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXJyb3IoKSA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6Tk9fRVJST1IpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZyBsb2cgPSBtX2Nv
bnRleHQtPmdldFNoYWRlckluZm9Mb2cobV92ZXJ0ZXhTaGFkZXIpOwotICAgIExPRyhDb21wb3Np
dGluZywgIlZlcnRleCBzaGFkZXIgbG9nOiAlc1xuIiwgbG9nLnV0ZjgoKS5kYXRhKCkpOwotICAg
IGxvZyA9IG1fY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyhtX2ZyYWdtZW50U2hhZGVyKTsKLSAg
ICBMT0coQ29tcG9zaXRpbmcsICJGcmFnbWVudCBzaGFkZXIgbG9nOiAlc1xuIiwgbG9nLnV0Zjgo
KS5kYXRhKCkpOwotICAgIGxvZyA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9Mb2cobV9pZCk7
Ci0gICAgTE9HKENvbXBvc2l0aW5nLCAiUHJvZ3JhbSBsb2c6ICVzXG4iLCBsb2cudXRmOCgpLmRh
dGEoKSk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OnNldE1hdHJpeChH
QzNEdWludCBsb2NhdGlvbiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsK
LSAgICBHQzNEZmxvYXQgbWF0cml4QXNGbG9hdHNbXSA9IHsKLSAgICAgICAgbWF0cml4Lm0xMSgp
LCBtYXRyaXgubTEyKCksIG1hdHJpeC5tMTMoKSwgbWF0cml4Lm0xNCgpLAotICAgICAgICBtYXRy
aXgubTIxKCksIG1hdHJpeC5tMjIoKSwgbWF0cml4Lm0yMygpLCBtYXRyaXgubTI0KCksCi0gICAg
ICAgIG1hdHJpeC5tMzEoKSwgbWF0cml4Lm0zMigpLCBtYXRyaXgubTMzKCksIG1hdHJpeC5tMzQo
KSwKLSAgICAgICAgbWF0cml4Lm00MSgpLCBtYXRyaXgubTQyKCksIG1hdHJpeC5tNDMoKSwgbWF0
cml4Lm00NCgpCi0gICAgfTsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2Nh
dGlvbiwgMSwgZmFsc2UsIG1hdHJpeEFzRmxvYXRzKTsKLX0KLQotR0MzRHVpbnQgVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OmdldExvY2F0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
VmFyaWFibGVUeXBlIHR5cGUpCi17Ci0gICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEdDM0R1aW50
Pjo6aXRlcmF0b3IgaXQgPSBtX3ZhcmlhYmxlcy5maW5kKG5hbWUpOwotICAgIGlmIChpdCAhPSBt
X3ZhcmlhYmxlcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKLQotICAgIEdDM0R1
aW50IGxvY2F0aW9uID0gMDsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFVuaWZvcm1W
YXJpYWJsZToKLSAgICAgICAgbG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihtX2lkLCBuYW1lKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdHRyaWJWYXJpYWJsZToK
LSAgICAgICAgbG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1faWQsIG5h
bWUpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgbV92YXJpYWJsZXMuYWRkKG5h
bWUsIGxvY2F0aW9uKTsKLSAgICByZXR1cm4gbG9jYXRpb247Ci19Ci0KLVRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjp+VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0oKQotewotICAgIFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbUlEID0gbV9pZDsKLSAgICBpZiAoIXByb2dyYW1JRCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT5kZXRhY2hTaGFkZXIocHJvZ3JhbUlELCBtX3Zl
cnRleFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIobV92ZXJ0ZXhTaGFkZXIp
OwotICAgIG1fY29udGV4dC0+ZGV0YWNoU2hhZGVyKHByb2dyYW1JRCwgbV9mcmFnbWVudFNoYWRl
cik7Ci0gICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIobV9mcmFnbWVudFNoYWRlcik7Ci0gICAg
bV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKHByb2dyYW1JRCk7Ci19Ci0KLSNkZWZpbmUgR0xTTF9E
SVJFQ1RJVkUoLi4uKSAiIyIjX19WQV9BUkdTX18iXG4iCi1zdGF0aWMgY29uc3QgY2hhciogdmVy
dGV4VGVtcGxhdGUgPQotICAgIFNUUklOR0lGWSgKLSAgICAgICAgYXR0cmlidXRlIHZlYzQgYV92
ZXJ0ZXg7Ci0gICAgICAgIHVuaWZvcm0gbWF0NCB1X21vZGVsVmlld01hdHJpeDsKLSAgICAgICAg
dW5pZm9ybSBtYXQ0IHVfcHJvamVjdGlvbk1hdHJpeDsKLSAgICAgICAgdW5pZm9ybSBtYXQ0IHVf
dGV4dHVyZVNwYWNlTWF0cml4OwotCi0gICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwot
ICAgICAgICB2YXJ5aW5nIHZlYzIgdl9tYXNrVGV4Q29vcmQ7Ci0gICAgICAgIHZhcnlpbmcgZmxv
YXQgdl9hbnRpYWxpYXM7Ci0KLSAgICAgICAgdm9pZCBub29wKGlub3V0IHZlYzIgZHVtbXlQYXJh
bWV0ZXIpIHsgfQotCi0gICAgICAgIHZlYzQgdG9WaWV3cG9ydFNwYWNlKHZlYzIgcG9zKSB7IHJl
dHVybiB2ZWM0KHBvcywgMC4sIDEuKSAqIHVfbW9kZWxWaWV3TWF0cml4OyB9Ci0KLSAgICAgICAg
Ly8gVGhpcyBmdW5jdGlvbiByZWxpZXMgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB3ZSBnZXQgZWRn
ZSB0cmlhbmdsZXMgd2l0aCBjb250cm9sIHBvaW50cywKLSAgICAgICAgLy8gYSBjb250cm9sIHBv
aW50IGJlaW5nIHRoZSBuZWFyZXN0IHBvaW50IHRvIHRoZSBjb29yZGluYXRlIHRoYXQgaXMgb24g
dGhlIGVkZ2UuCi0gICAgICAgIHZvaWQgYXBwbHlBbnRpYWxpYXNpbmcoaW5vdXQgdmVjMiBwb3Np
dGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gV2UgY291bnQgb24gdGhlIGZhY3QgdGhh
dCBxdWFkIHBhc3NlZCBpbiBpcyBhbHdheXMgYSB1bml0IHJlY3QsCi0gICAgICAgICAgICAvLyBh
bmQgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBhcHBsaWVzIHRoZSByZWFsIHJlY3QuCi0gICAg
ICAgICAgICBjb25zdCB2ZWMyIGNlbnRlciA9IHZlYzIoMC41LCAwLjUpOwotICAgICAgICAgICAg
Y29uc3QgZmxvYXQgYW50aWFsaWFzSW5mbGF0aW9uRGlzdGFuY2UgPSAxLjsKLQotICAgICAgICAg
ICAgLy8gV2UgcGFzcyB0aGUgY29udHJvbCBwb2ludCBhcyB0aGUgencgY29vcmRpbmF0ZXMgb2Yg
dGhlIHZlcnRleC4KLSAgICAgICAgICAgIC8vIFRoZSBjb250cm9sIHBvaW50IGlzIHRoZSBwb2lu
dCBvbiB0aGUgZWRnZSBjbG9zZXN0IHRvIHRoZSBjdXJyZW50IHBvc2l0aW9uLgotICAgICAgICAg
ICAgLy8gVGhlIGNvbnRyb2wgcG9pbnQgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBhbnRpYWxpYXMg
dmFsdWUuCi0gICAgICAgICAgICB2ZWMyIGNvbnRyb2xQb2ludCA9IGFfdmVydGV4Lnp3OwotCi0g
ICAgICAgICAgICAvLyBGaXJzdCB3ZSBjYWxjdWxhdGUgdGhlIGRpc3RhbmNlIGluIHZpZXdwb3J0
IHNwYWNlLgotICAgICAgICAgICAgdmVjNCBjZW50ZXJJblZpZXdwb3J0Q29vcmRpbmF0ZXMgPSB0
b1ZpZXdwb3J0U3BhY2UoY2VudGVyKTsKLSAgICAgICAgICAgIHZlYzQgY29udHJvbFBvaW50SW5W
aWV3cG9ydENvb3JkaW5hdGVzID0gdG9WaWV3cG9ydFNwYWNlKGNvbnRyb2xQb2ludCk7Ci0gICAg
ICAgICAgICBmbG9hdCB2aWV3cG9ydFNwYWNlRGlzdGFuY2UgPSBkaXN0YW5jZShjZW50ZXJJblZp
ZXdwb3J0Q29vcmRpbmF0ZXMsIGNvbnRyb2xQb2ludEluVmlld3BvcnRDb29yZGluYXRlcyk7Ci0K
LSAgICAgICAgICAgIC8vIFdlIGFkZCB0aGUgaW5mbGF0aW9uIGRpc3RhbmNlIHRvIHRoZSBjb21w
dXRlZCBkaXN0YW5jZSwgYW5kIGNvbXB1dGUgdGhlIHJhdGlvLgotICAgICAgICAgICAgZmxvYXQg
aW5mbGF0aW9uUmF0aW8gPSAodmlld3BvcnRTcGFjZURpc3RhbmNlICsgYW50aWFsaWFzSW5mbGF0
aW9uRGlzdGFuY2UpIC8gdmlld3BvcnRTcGFjZURpc3RhbmNlOwotCi0gICAgICAgICAgICAvLyB2
X2FudGlhbGlhcyBuZWVkcyB0byBiZSAwIGZvciB0aGUgb3V0ZXIgZWRnZSBhbmQgMS4gZm9yIHRo
ZSBpbm5lciBlZGdlLgotICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRyb2xQb2ludCBpcyBl
cXVhbCB0byB0aGUgcG9zaXRpb24gaW4gdGhlIGVkZ2UgdmVydGljZXMsIHRoZSB2YWx1ZSBpcyBh
bHdheXMgMCBmb3IgdGhvc2UuCi0gICAgICAgICAgICAvLyBGb3IgdGhlIGNlbnRlciBwb2ludCwg
dGhlIGRpc3RhbmNlIGlzIGFsd2F5cyAwLjUsIHNvIHdlIG5vcm1hbGl6ZSB0byAxLiBieSBtdWx0
aXBseWluZyBieSAyLgotICAgICAgICAgICAgLy8gQnkgbXVsdHBseWluZyBieSBpbmZsYXRpb25S
YXRpbyBhbmQgZGl2aWRpbmcgYnkgKGluZmxhdGlvblJhdGlvIC0gMSksCi0gICAgICAgICAgICAv
LyBXZSBtYWtlIHN1cmUgdGhhdCB0aGUgdmFyeWluZyBpbnRlcnBvbGF0ZXMgYmV0d2VlbiAwIChv
dXRlciBlZGdlKSwgMSAoaW5uZXIgZWRnZSkgYW5kIG4gPiAxIChjZW50ZXIpLgotICAgICAgICAg
ICAgdl9hbnRpYWxpYXMgPSBkaXN0YW5jZShjb250cm9sUG9pbnQsIHBvc2l0aW9uKSAqIDIuICog
aW5mbGF0aW9uUmF0aW8gLyAoaW5mbGF0aW9uUmF0aW8gLSAxLik7Ci0KLSAgICAgICAgICAgIC8v
IE5vdyBpbmZsYXRlIHRoZSBhY3R1YWwgcG9zaXRpb24uIEJ5IHVzaW5nIHRoaXMgZm9ybXVsYSBp
bnN0ZWFkIG9mIGluZmxhdGluZyBwb3NpdGlvbiBkaXJlY3RseSwKLSAgICAgICAgICAgIC8vIHdl
IGVuc3VyZSB0aGF0IHRoZSBjZW50ZXIgdmVydGV4IGlzIG5ldmVyIGluZmxhdGVkLgotICAgICAg
ICAgICAgcG9zaXRpb24gPSBjZW50ZXIgKyAocG9zaXRpb24gLSBjZW50ZXIpICogaW5mbGF0aW9u
UmF0aW87Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgewot
ICAgICAgICAgICAgdmVjMiBwb3NpdGlvbiA9IGFfdmVydGV4Lnh5OwotICAgICAgICAgICAgYXBw
bHlBbnRpYWxpYXNpbmdJZk5lZWRlZChwb3NpdGlvbik7Ci0KLSAgICAgICAgICAgIC8vIFRoZSB0
ZXh0dXJlIHBvc2l0aW9uIG5lZWRzIHRvIGJlIGNsYW1wZWQgdG8gMC4uMSBiZWZvcmUgdGhlIHRl
eHR1cmUgbWF0cml4IGlzIGFwcGxpZWQuCi0gICAgICAgICAgICB2ZWM0IGNsYW1wZWRQb3NpdGlv
biA9IGNsYW1wKHZlYzQocG9zaXRpb24sIDAuLCAxLiksIDAuLCAxLik7Ci0gICAgICAgICAgICB2
X3RleENvb3JkID0gKHVfdGV4dHVyZVNwYWNlTWF0cml4ICogY2xhbXBlZFBvc2l0aW9uKS54eTsK
LQotICAgICAgICAgICAgdl9tYXNrVGV4Q29vcmQgPSBwb3NpdGlvbjsKLSAgICAgICAgICAgIGds
X1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uTWF0cml4ICogdV9tb2RlbFZpZXdNYXRyaXggKiB2ZWM0
KHBvc2l0aW9uLCAwLiwgMS4pOwotICAgICAgICB9Ci0gICAgKTsKLQotI2RlZmluZSBSRUNUX1RF
WFRVUkVfRElSRUNUSVZFIFwKLSAgICBHTFNMX0RJUkVDVElWRShpZmRlZiBFTkFCTEVfUmVjdCkg
XAotICAgICAgICBHTFNMX0RJUkVDVElWRShkZWZpbmUgU2FtcGxlclR5cGUgc2FtcGxlcjJEUmVj
dCkgXAotICAgICAgICBHTFNMX0RJUkVDVElWRShkZWZpbmUgU2FtcGxlckZ1bmN0aW9uIHRleHR1
cmUyRFJlY3QpIFwKLSAgICBHTFNMX0RJUkVDVElWRShlbHNlKSBcCi0gICAgICAgIEdMU0xfRElS
RUNUSVZFKGRlZmluZSBTYW1wbGVyVHlwZSBzYW1wbGVyMkQpIFwKLSAgICAgICAgR0xTTF9ESVJF
Q1RJVkUoZGVmaW5lIFNhbXBsZXJGdW5jdGlvbiB0ZXh0dXJlMkQpIFwKLSAgICBHTFNMX0RJUkVD
VElWRShlbmRpZikKLQotI2RlZmluZSBFTkFCTEVfQVBQTElFUihOYW1lKSAiI2RlZmluZSBFTkFC
TEVfIiNOYW1lIlxuI2RlZmluZSBhcHBseSIjTmFtZSJJZk5lZWRlZCBhcHBseSIjTmFtZSJcbiIK
LSNkZWZpbmUgRElTQUJMRV9BUFBMSUVSKE5hbWUpICIjZGVmaW5lIGFwcGx5IiNOYW1lIklmTmVl
ZGVkIG5vb3BcbiIKLSNkZWZpbmUgQkxVUl9DT05TVEFOVFMgXAotICAgIEdMU0xfRElSRUNUSVZF
KGRlZmluZSBHQVVTU0lBTl9LRVJORUxfSEFMRl9XSURUSCAxMSkgXAotICAgIEdMU0xfRElSRUNU
SVZFKGRlZmluZSBHQVVTU0lBTl9LRVJORUxfU1RFUCAwLjIpCi0KLQotc3RhdGljIGNvbnN0IGNo
YXIqIGZyYWdtZW50VGVtcGxhdGUgPQotICAgIFJFQ1RfVEVYVFVSRV9ESVJFQ1RJVkUKLSAgICBC
TFVSX0NPTlNUQU5UUwotICAgIFNUUklOR0lGWSgKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7Ci0gICAgICAgIHVuaWZvcm0gU2FtcGxlclR5cGUgc19zYW1wbGVyOwotICAgICAgICB1
bmlmb3JtIHNhbXBsZXIyRCBzX21hc2s7Ci0gICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfY29u
dGVudFRleHR1cmU7Ci0gICAgICAgIHVuaWZvcm0gZmxvYXQgdV9vcGFjaXR5OwotICAgICAgICB2
YXJ5aW5nIGZsb2F0IHZfYW50aWFsaWFzOwotICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29y
ZDsKLSAgICAgICAgdmFyeWluZyB2ZWMyIHZfbWFza1RleENvb3JkOwotICAgICAgICB1bmlmb3Jt
IGZsb2F0IHVfZmlsdGVyQW1vdW50OwotICAgICAgICB1bmlmb3JtIHZlYzIgdV9ibHVyUmFkaXVz
OwotICAgICAgICB1bmlmb3JtIHZlYzIgdV9zaGFkb3dPZmZzZXQ7Ci0gICAgICAgIHVuaWZvcm0g
dmVjNCB1X2NvbG9yOwotICAgICAgICB1bmlmb3JtIGZsb2F0IHVfZ2F1c3NpYW5LZXJuZWxbR0FV
U1NJQU5fS0VSTkVMX0hBTEZfV0lEVEhdOwotCi0gICAgICAgIHZvaWQgbm9vcChpbm91dCB2ZWM0
IGR1bW15UGFyYW1ldGVyKSB7IH0KLQotICAgICAgICBmbG9hdCBhbnRpYWxpYXMoKSB7IHJldHVy
biBzbW9vdGhzdGVwKHZfYW50aWFsaWFzLCAwLiwgMS4pOyB9Ci0KLSAgICAgICAgdm9pZCBhcHBs
eVRleHR1cmUoaW5vdXQgdmVjNCBjb2xvcikgeyBjb2xvciA9IFNhbXBsZXJGdW5jdGlvbihzX3Nh
bXBsZXIsIHZfdGV4Q29vcmQpOyB9Ci0gICAgICAgIHZvaWQgYXBwbHlPcGFjaXR5KGlub3V0IHZl
YzQgY29sb3IpIHsgY29sb3IgKj0gdV9vcGFjaXR5OyB9Ci0gICAgICAgIHZvaWQgYXBwbHlBbnRp
YWxpYXNpbmcoaW5vdXQgdmVjNCBjb2xvcikgeyBjb2xvciAqPSBhbnRpYWxpYXMoKTsgfQotICAg
ICAgICB2b2lkIGFwcGx5TWFzayhpbm91dCB2ZWM0IGNvbG9yKSB7IGNvbG9yICo9IHRleHR1cmUy
RChzX21hc2ssIHZfbWFza1RleENvb3JkKS5hOyB9Ci0KLSAgICAgICAgdm9pZCBhcHBseUdyYXlz
Y2FsZUZpbHRlcihpbm91dCB2ZWM0IGNvbG9yKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9h
dCBhbW91bnQgPSAxLjAgLSB1X2ZpbHRlckFtb3VudDsKLSAgICAgICAgICAgIGNvbG9yID0gdmVj
NCgoMC4yMTI2ICsgMC43ODc0ICogYW1vdW50KSAqIGNvbG9yLnIgKyAoMC43MTUyIC0gMC43MTUy
ICogYW1vdW50KSAqIGNvbG9yLmcgKyAoMC4wNzIyIC0gMC4wNzIyICogYW1vdW50KSAqIGNvbG9y
LmIsCi0gICAgICAgICAgICAgICAgKDAuMjEyNiAtIDAuMjEyNiAqIGFtb3VudCkgKiBjb2xvci5y
ICsgKDAuNzE1MiArIDAuMjg0OCAqIGFtb3VudCkgKiBjb2xvci5nICsgKDAuMDcyMiAtIDAuMDcy
MiAqIGFtb3VudCkgKiBjb2xvci5iLAotICAgICAgICAgICAgICAgICgwLjIxMjYgLSAwLjIxMjYg
KiBhbW91bnQpICogY29sb3IuciArICgwLjcxNTIgLSAwLjcxNTIgKiBhbW91bnQpICogY29sb3Iu
ZyArICgwLjA3MjIgKyAwLjkyNzggKiBhbW91bnQpICogY29sb3IuYiwKLSAgICAgICAgICAgICAg
ICBjb2xvci5hKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYXBwbHlTZXBpYUZpbHRlcihp
bm91dCB2ZWM0IGNvbG9yKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdCBhbW91bnQgPSAx
LjAgLSB1X2ZpbHRlckFtb3VudDsKLSAgICAgICAgICAgIGNvbG9yID0gdmVjNCgoMC4zOTMgKyAw
LjYwNyAqIGFtb3VudCkgKiBjb2xvci5yICsgKDAuNzY5IC0gMC43NjkgKiBhbW91bnQpICogY29s
b3IuZyArICgwLjE4OSAtIDAuMTg5ICogYW1vdW50KSAqIGNvbG9yLmIsCi0gICAgICAgICAgICAg
ICAgKDAuMzQ5IC0gMC4zNDkgKiBhbW91bnQpICogY29sb3IuciArICgwLjY4NiArIDAuMzE0ICog
YW1vdW50KSAqIGNvbG9yLmcgKyAoMC4xNjggLSAwLjE2OCAqIGFtb3VudCkgKiBjb2xvci5iLAot
ICAgICAgICAgICAgICAgICgwLjI3MiAtIDAuMjcyICogYW1vdW50KSAqIGNvbG9yLnIgKyAoMC41
MzQgLSAwLjUzNCAqIGFtb3VudCkgKiBjb2xvci5nICsgKDAuMTMxICsgMC44NjkgKiBhbW91bnQp
ICogY29sb3IuYiwKLSAgICAgICAgICAgICAgICBjb2xvci5hKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZvaWQgYXBwbHlTYXR1cmF0ZUZpbHRlcihpbm91dCB2ZWM0IGNvbG9yKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb2xvciA9IHZlYzQoKDAuMjEzICsgMC43ODcgKiB1X2ZpbHRlckFtb3Vu
dCkgKiBjb2xvci5yICsgKDAuNzE1IC0gMC43MTUgKiB1X2ZpbHRlckFtb3VudCkgKiBjb2xvci5n
ICsgKDAuMDcyIC0gMC4wNzIgKiB1X2ZpbHRlckFtb3VudCkgKiBjb2xvci5iLAotICAgICAgICAg
ICAgICAgICgwLjIxMyAtIDAuMjEzICogdV9maWx0ZXJBbW91bnQpICogY29sb3IuciArICgwLjcx
NSArIDAuMjg1ICogdV9maWx0ZXJBbW91bnQpICogY29sb3IuZyArICgwLjA3MiAtIDAuMDcyICog
dV9maWx0ZXJBbW91bnQpICogY29sb3IuYiwKLSAgICAgICAgICAgICAgICAoMC4yMTMgLSAwLjIx
MyAqIHVfZmlsdGVyQW1vdW50KSAqIGNvbG9yLnIgKyAoMC43MTUgLSAwLjcxNSAqIHVfZmlsdGVy
QW1vdW50KSAqIGNvbG9yLmcgKyAoMC4wNzIgKyAwLjkyOCAqIHVfZmlsdGVyQW1vdW50KSAqIGNv
bG9yLmIsCi0gICAgICAgICAgICAgICAgY29sb3IuYSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2
b2lkIGFwcGx5SHVlUm90YXRlRmlsdGVyKGlub3V0IHZlYzQgY29sb3IpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZsb2F0IHBpID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKLSAgICAgICAgICAg
IGZsb2F0IGMgPSBjb3ModV9maWx0ZXJBbW91bnQgKiBwaSAvIDE4MC4wKTsKLSAgICAgICAgICAg
IGZsb2F0IHMgPSBzaW4odV9maWx0ZXJBbW91bnQgKiBwaSAvIDE4MC4wKTsKLSAgICAgICAgICAg
IGNvbG9yID0gdmVjNChjb2xvci5yICogKDAuMjEzICsgYyAqIDAuNzg3IC0gcyAqIDAuMjEzKSAr
IGNvbG9yLmcgKiAoMC43MTUgLSBjICogMC43MTUgLSBzICogMC43MTUpICsgY29sb3IuYiAqICgw
LjA3MiAtIGMgKiAwLjA3MiArIHMgKiAwLjkyOCksCi0gICAgICAgICAgICAgICAgY29sb3IuciAq
ICgwLjIxMyAtIGMgKiAwLjIxMyArIHMgKiAwLjE0MykgKyBjb2xvci5nICogKDAuNzE1ICsgYyAq
IDAuMjg1ICsgcyAqIDAuMTQwKSArIGNvbG9yLmIgKiAoMC4wNzIgLSBjICogMC4wNzIgLSBzICog
MC4yODMpLAotICAgICAgICAgICAgICAgIGNvbG9yLnIgKiAoMC4yMTMgLSBjICogMC4yMTMgLSBz
ICogMC43ODcpICsgIGNvbG9yLmcgKiAoMC43MTUgLSBjICogMC43MTUgKyBzICogMC43MTUpICsg
Y29sb3IuYiAqICgwLjA3MiArIGMgKiAwLjkyOCArIHMgKiAwLjA3MiksCi0gICAgICAgICAgICAg
ICAgY29sb3IuYSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdCBpbnZlcnQoZmxvYXQgbikg
eyByZXR1cm4gKDEuMCAtIG4pICogdV9maWx0ZXJBbW91bnQgKyBuICogKDEuMCAtIHVfZmlsdGVy
QW1vdW50KTsgfQotICAgICAgICB2b2lkIGFwcGx5SW52ZXJ0RmlsdGVyKGlub3V0IHZlYzQgY29s
b3IpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbG9yID0gdmVjNChpbnZlcnQoY29sb3Iuciks
IGludmVydChjb2xvci5nKSwgaW52ZXJ0KGNvbG9yLmIpLCBjb2xvci5hKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZvaWQgYXBwbHlCcmlnaHRuZXNzRmlsdGVyKGlub3V0IHZlYzQgY29sb3IpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbG9yID0gdmVjNChjb2xvci5yZ2IgKiAoMS4wICsgdV9m
aWx0ZXJBbW91bnQpLCBjb2xvci5hKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZsb2F0IGNvbnRy
YXN0KGZsb2F0IG4pIHsgcmV0dXJuIChuIC0gMC41KSAqIHVfZmlsdGVyQW1vdW50ICsgMC41OyB9
Ci0gICAgICAgIHZvaWQgYXBwbHlDb250cmFzdEZpbHRlcihpbm91dCB2ZWM0IGNvbG9yKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb2xvciA9IHZlYzQoY29udHJhc3QoY29sb3IuciksIGNvbnRy
YXN0KGNvbG9yLmcpLCBjb250cmFzdChjb2xvci5iKSwgY29sb3IuYSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2b2lkIGFwcGx5T3BhY2l0eUZpbHRlcihpbm91dCB2ZWM0IGNvbG9yKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb2xvciA9IHZlYzQoY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwg
Y29sb3IuYSAqIHVfZmlsdGVyQW1vdW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZlYzQgc2Ft
cGxlQ29sb3JBdFJhZGl1cyhmbG9hdCByYWRpdXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZl
YzIgY29vcmQgPSB2X3RleENvb3JkICsgcmFkaXVzICogdV9ibHVyUmFkaXVzOwotICAgICAgICAg
ICAgcmV0dXJuIFNhbXBsZXJGdW5jdGlvbihzX3NhbXBsZXIsIGNvb3JkKSAqIGZsb2F0KGNvb3Jk
LnggPiAwLiAmJiBjb29yZC55ID4gMC4gJiYgY29vcmQueCA8IDEuICYmIGNvb3JkLnkgPCAxLik7
Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdCBzYW1wbGVBbHBoYUF0UmFkaXVzKGZsb2F0IHJh
ZGl1cykKLSAgICAgICAgewotICAgICAgICAgICAgdmVjMiBjb29yZCA9IHZfdGV4Q29vcmQgLSB1
X3NoYWRvd09mZnNldCArIHJhZGl1cyAqIHVfYmx1clJhZGl1czsKLSAgICAgICAgICAgIHJldHVy
biBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyLCBjb29yZCkuYSAqIGZsb2F0KGNvb3JkLnggPiAw
LiAmJiBjb29yZC55ID4gMC4gJiYgY29vcmQueCA8IDEuICYmIGNvb3JkLnkgPCAxLik7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2b2lkIGFwcGx5Qmx1ckZpbHRlcihpbm91dCB2ZWM0IGNvbG9yKQot
ICAgICAgICB7Ci0gICAgICAgICAgICB2ZWM0IHRvdGFsID0gc2FtcGxlQ29sb3JBdFJhZGl1cygw
LikgKiB1X2dhdXNzaWFuS2VybmVsWzBdOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkg
PCBHQVVTU0lBTl9LRVJORUxfSEFMRl9XSURUSDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgdG90
YWwgKz0gc2FtcGxlQ29sb3JBdFJhZGl1cyhmbG9hdChpKSAqIEdBVVNTSUFOX0tFUk5FTF9TVEVQ
KSAqIHVfZ2F1c3NpYW5LZXJuZWxbaV07Ci0gICAgICAgICAgICAgICAgdG90YWwgKz0gc2FtcGxl
Q29sb3JBdFJhZGl1cyhmbG9hdCgtMSAqIGkpICogR0FVU1NJQU5fS0VSTkVMX1NURVApICogdV9n
YXVzc2lhbktlcm5lbFtpXTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY29sb3IgPSB0
b3RhbDsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYXBwbHlBbHBoYUJsdXIoaW5vdXQgdmVj
NCBjb2xvcikKLSAgICAgICAgewotICAgICAgICAgICAgZmxvYXQgdG90YWwgPSBzYW1wbGVBbHBo
YUF0UmFkaXVzKDAuKSAqIHVfZ2F1c3NpYW5LZXJuZWxbMF07Ci0gICAgICAgICAgICBmb3IgKGlu
dCBpID0gMTsgaSA8IEdBVVNTSUFOX0tFUk5FTF9IQUxGX1dJRFRIOyBpKyspIHsKLSAgICAgICAg
ICAgICAgICB0b3RhbCArPSBzYW1wbGVBbHBoYUF0UmFkaXVzKGZsb2F0KGkpICogR0FVU1NJQU5f
S0VSTkVMX1NURVApICogdV9nYXVzc2lhbktlcm5lbFtpXTsKLSAgICAgICAgICAgICAgICB0b3Rh
bCArPSBzYW1wbGVBbHBoYUF0UmFkaXVzKGZsb2F0KC0xICogaSkgKiBHQVVTU0lBTl9LRVJORUxf
U1RFUCkgKiB1X2dhdXNzaWFuS2VybmVsW2ldOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBjb2xvciAqPSB0b3RhbDsKLSAgICAgICAgfQotCi0gICAgICAgIHZlYzQgc291cmNlT3Zlcih2
ZWM0IHNyYywgdmVjNCBkc3QpIHsgcmV0dXJuIHNyYyArIGRzdCAqICgxLiAtIGRzdC5hKTsgfQot
Ci0gICAgICAgIHZvaWQgYXBwbHlDb250ZW50VGV4dHVyZShpbm91dCB2ZWM0IGNvbG9yKQotICAg
ICAgICB7Ci0gICAgICAgICAgICB2ZWM0IGNvbnRlbnRDb2xvciA9IHRleHR1cmUyRChzX2NvbnRl
bnRUZXh0dXJlLCB2X3RleENvb3JkKTsKLSAgICAgICAgICAgIGNvbG9yID0gc291cmNlT3Zlcihj
b250ZW50Q29sb3IsIGNvbG9yKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYXBwbHlTb2xp
ZENvbG9yKGlub3V0IHZlYzQgY29sb3IpIHsgY29sb3IgKj0gdV9jb2xvcjsgfQotCi0gICAgICAg
IHZvaWQgbWFpbih2b2lkKQotICAgICAgICB7Ci0gICAgICAgICAgICB2ZWM0IGNvbG9yID0gdmVj
NCgxLiwgMS4sIDEuLCAxLik7Ci0gICAgICAgICAgICBhcHBseVRleHR1cmVJZk5lZWRlZChjb2xv
cik7Ci0gICAgICAgICAgICBhcHBseVNvbGlkQ29sb3JJZk5lZWRlZChjb2xvcik7Ci0gICAgICAg
ICAgICBhcHBseUFudGlhbGlhc2luZ0lmTmVlZGVkKGNvbG9yKTsKLSAgICAgICAgICAgIGFwcGx5
TWFza0lmTmVlZGVkKGNvbG9yKTsKLSAgICAgICAgICAgIGFwcGx5T3BhY2l0eUlmTmVlZGVkKGNv
bG9yKTsKLSAgICAgICAgICAgIGFwcGx5R3JheXNjYWxlRmlsdGVySWZOZWVkZWQoY29sb3IpOwot
ICAgICAgICAgICAgYXBwbHlTZXBpYUZpbHRlcklmTmVlZGVkKGNvbG9yKTsKLSAgICAgICAgICAg
IGFwcGx5U2F0dXJhdGVGaWx0ZXJJZk5lZWRlZChjb2xvcik7Ci0gICAgICAgICAgICBhcHBseUh1
ZVJvdGF0ZUZpbHRlcklmTmVlZGVkKGNvbG9yKTsKLSAgICAgICAgICAgIGFwcGx5SW52ZXJ0Rmls
dGVySWZOZWVkZWQoY29sb3IpOwotICAgICAgICAgICAgYXBwbHlCcmlnaHRuZXNzRmlsdGVySWZO
ZWVkZWQoY29sb3IpOwotICAgICAgICAgICAgYXBwbHlDb250cmFzdEZpbHRlcklmTmVlZGVkKGNv
bG9yKTsKLSAgICAgICAgICAgIGFwcGx5T3BhY2l0eUZpbHRlcklmTmVlZGVkKGNvbG9yKTsKLSAg
ICAgICAgICAgIGFwcGx5Qmx1ckZpbHRlcklmTmVlZGVkKGNvbG9yKTsKLSAgICAgICAgICAgIGFw
cGx5QWxwaGFCbHVySWZOZWVkZWQoY29sb3IpOwotICAgICAgICAgICAgYXBwbHlDb250ZW50VGV4
dHVyZUlmTmVlZGVkKGNvbG9yKTsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOwot
ICAgICAgICB9Ci0gICAgKTsKLQotUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bT4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBjb250ZXh0LCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBv
cHRpb25zKQotewotICAgIFN0cmluZ0J1aWxkZXIgc2hhZGVyQnVpbGRlcjsKLSNkZWZpbmUgU0VU
X0FQUExJRVJfRlJPTV9PUFRJT05TKEFwcGxpZXIpIFwKLSAgICBzaGFkZXJCdWlsZGVyLmFwcGVu
ZChcCi0gICAgICAgIChvcHRpb25zICYgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkFwcGxp
ZXIpID8gRU5BQkxFX0FQUExJRVIoQXBwbGllcikgOiBESVNBQkxFX0FQUExJRVIoQXBwbGllcikp
Ci0KLSAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoVGV4dHVyZSk7Ci0gICAgU0VUX0FQUExJ
RVJfRlJPTV9PUFRJT05TKFJlY3QpOwotICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhTb2xp
ZENvbG9yKTsKLSAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoT3BhY2l0eSk7Ci0gICAgU0VU
X0FQUExJRVJfRlJPTV9PUFRJT05TKE1hc2spOwotICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9O
UyhBbnRpYWxpYXNpbmcpOwotICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhHcmF5c2NhbGVG
aWx0ZXIpOwotICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhTZXBpYUZpbHRlcik7Ci0gICAg
U0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFNhdHVyYXRlRmlsdGVyKTsKLSAgICBTRVRfQVBQTElF
Ul9GUk9NX09QVElPTlMoSHVlUm90YXRlRmlsdGVyKTsKLSAgICBTRVRfQVBQTElFUl9GUk9NX09Q
VElPTlMoQnJpZ2h0bmVzc0ZpbHRlcik7Ci0gICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKENv
bnRyYXN0RmlsdGVyKTsKLSAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoSW52ZXJ0RmlsdGVy
KTsKLSAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoT3BhY2l0eUZpbHRlcik7Ci0gICAgU0VU
X0FQUExJRVJfRlJPTV9PUFRJT05TKEJsdXJGaWx0ZXIpOwotICAgIFNFVF9BUFBMSUVSX0ZST01f
T1BUSU9OUyhBbHBoYUJsdXIpOwotICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhDb250ZW50
VGV4dHVyZSk7Ci0gICAgU3RyaW5nQnVpbGRlciB2ZXJ0ZXhCdWlsZGVyOwotICAgIHZlcnRleEJ1
aWxkZXIuYXBwZW5kKHNoYWRlckJ1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgdmVydGV4QnVpbGRl
ci5hcHBlbmQodmVydGV4VGVtcGxhdGUpOwotICAgIHNoYWRlckJ1aWxkZXIuYXBwZW5kKGZyYWdt
ZW50VGVtcGxhdGUpOwotCi0gICAgU3RyaW5nIHZlcnRleFNvdXJjZSA9IHZlcnRleEJ1aWxkZXIu
dG9TdHJpbmcoKTsKLSAgICBTdHJpbmcgZnJhZ21lbnRTb3VyY2UgPSBzaGFkZXJCdWlsZGVyLnRv
U3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtKGNvbnRleHQsIHZlcnRleFNvdXJjZSwgZnJhZ21lbnRTb3VyY2UpKTsKLX0KLQotfQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMzdlN2Q2OWQ5YTg3NzRmMWQzMDYxYTc3OTMxYTJjMDNjOWRj
MTQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8qCi0gQ29weXJpZ2h0IChD
KSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotIENv
cHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotCi0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotCi0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0j
aWZuZGVmIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtX2gKLSNkZWZpbmUgVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW1faAotCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQotI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCi0jaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLSNkZWZpbmUgVEVYTUFQX0RFQ0xBUkVfVkFSSUFCTEUoQWNj
ZXNzb3IsIE5hbWUsIFR5cGUpIEdDM0R1aW50IEFjY2Vzc29yIyNMb2NhdGlvbigpIHsgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyBuYW1lKE5hbWUpOyByZXR1cm4gZ2V0TG9jYXRpb24obmFtZSwg
VHlwZSk7IH0KLSNkZWZpbmUgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShBY2Nlc3NvcikgVEVYTUFQ
X0RFQ0xBUkVfVkFSSUFCTEUoQWNjZXNzb3IsICJ1XyIjQWNjZXNzb3IsIFVuaWZvcm1WYXJpYWJs
ZSkKLSNkZWZpbmUgVEVYTUFQX0RFQ0xBUkVfQVRUUklCVVRFKEFjY2Vzc29yKSBURVhNQVBfREVD
TEFSRV9WQVJJQUJMRShBY2Nlc3NvciwgImFfIiNBY2Nlc3NvciwgQXR0cmliVmFyaWFibGUpCi0j
ZGVmaW5lIFRFWE1BUF9ERUNMQVJFX1NBTVBMRVIoQWNjZXNzb3IpIFRFWE1BUF9ERUNMQVJFX1ZB
UklBQkxFKEFjY2Vzc29yLCAic18iI0FjY2Vzc29yLCBVbmlmb3JtVmFyaWFibGUpCi0KLWNsYXNz
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW0+IHsKLXB1YmxpYzoKLSAgICBlbnVtIE9wdGlvbiB7Ci0gICAgICAg
IFRleHR1cmUgICAgICAgICAgPSAxTCA8PCAwLAotICAgICAgICBSZWN0ICAgICAgICAgICAgID0g
MUwgPDwgMSwKLSAgICAgICAgU29saWRDb2xvciAgICAgICA9IDFMIDw8IDIsCi0gICAgICAgIE9w
YWNpdHkgICAgICAgICAgPSAxTCA8PCAzLAotICAgICAgICBNYXNrICAgICAgICAgICAgID0gMUwg
PDwgNCwKLSAgICAgICAgQW50aWFsaWFzaW5nICAgICA9IDFMIDw8IDUsCi0gICAgICAgIEdyYXlz
Y2FsZUZpbHRlciAgPSAxTCA8PCA2LAotICAgICAgICBTZXBpYUZpbHRlciAgICAgID0gMUwgPDwg
NywKLSAgICAgICAgU2F0dXJhdGVGaWx0ZXIgICA9IDFMIDw8IDgsCi0gICAgICAgIEh1ZVJvdGF0
ZUZpbHRlciAgPSAxTCA8PCA5LAotICAgICAgICBCcmlnaHRuZXNzRmlsdGVyID0gMUwgPDwgMTAs
Ci0gICAgICAgIENvbnRyYXN0RmlsdGVyICAgPSAxTCA8PCAxMSwKLSAgICAgICAgSW52ZXJ0Rmls
dGVyICAgICA9IDFMIDw8IDEyLAotICAgICAgICBPcGFjaXR5RmlsdGVyICAgID0gMUwgPDwgMTMs
Ci0gICAgICAgIEJsdXJGaWx0ZXIgICAgICAgPSAxTCA8PCAxNCwKLSAgICAgICAgQWxwaGFCbHVy
ICAgICAgICA9IDFMIDw8IDE1LAotICAgICAgICBDb250ZW50VGV4dHVyZSAgID0gMUwgPDwgMTYK
LSAgICB9OwotCi0gICAgdHlwZWRlZiB1bnNpZ25lZCBPcHRpb25zOwotCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IGNyZWF0ZShQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiwgT3B0aW9ucyk7Ci0gICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW0oKTsKLSAgICBQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW1JRCgpIGNvbnN0IHsg
cmV0dXJuIG1faWQ7IH0KLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQotCi0gICAgVEVYTUFQX0RFQ0xBUkVfQVRUUklCVVRFKHZlcnRl
eCkKLQotICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0obW9kZWxWaWV3TWF0cml4KQotICAgIFRF
WE1BUF9ERUNMQVJFX1VOSUZPUk0ocHJvamVjdGlvbk1hdHJpeCkKLSAgICBURVhNQVBfREVDTEFS
RV9VTklGT1JNKHRleHR1cmVTcGFjZU1hdHJpeCkKLSAgICBURVhNQVBfREVDTEFSRV9VTklGT1JN
KG9wYWNpdHkpCi0gICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShjb2xvcikKLSAgICBURVhNQVBf
REVDTEFSRV9VTklGT1JNKGV4cGFuZGVkUXVhZEVkZ2VzSW5TY3JlZW5TcGFjZSkKLSAgICBURVhN
QVBfREVDTEFSRV9TQU1QTEVSKHNhbXBsZXIpCi0gICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExFUiht
YXNrKQotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZP
Uk0oZmlsdGVyQW1vdW50KQotICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0oZ2F1c3NpYW5LZXJu
ZWwpCi0gICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShibHVyUmFkaXVzKQotICAgIFRFWE1BUF9E
RUNMQVJFX1VOSUZPUk0oc2hhZG93T2Zmc2V0KQotICAgIFRFWE1BUF9ERUNMQVJFX1NBTVBMRVIo
Y29udGVudFRleHR1cmUpCi0jZW5kaWYKLQotICAgIHZvaWQgc2V0TWF0cml4KEdDM0R1aW50LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotCi1wcml2YXRlOgotICAgIFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBjb25zdCBTdHJp
bmcmIHZlcnRleFNoYWRlclNvdXJjZSwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlclNvdXJj
ZSk7Ci0gICAgUGxhdGZvcm0zRE9iamVjdCBtX3ZlcnRleFNoYWRlcjsKLSAgICBQbGF0Zm9ybTNE
T2JqZWN0IG1fZnJhZ21lbnRTaGFkZXI7Ci0KLSAgICBlbnVtIFZhcmlhYmxlVHlwZSB7IFVuaWZv
cm1WYXJpYWJsZSwgQXR0cmliVmFyaWFibGUgfTsKLSAgICBHQzNEdWludCBnZXRMb2NhdGlvbihj
b25zdCBBdG9taWNTdHJpbmcmLCBWYXJpYWJsZVR5cGUpOwotCi0gICAgUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBtX2NvbnRleHQ7Ci0gICAgUGxhdGZvcm0zRE9iamVjdCBtX2lkOwotICAgIEhh
c2hNYXA8QXRvbWljU3RyaW5nLCBHQzNEdWludD4gbV92YXJpYWJsZXM7Ci19OwotCi19Ci0jZW5k
aWYKLQotI2VuZGlmIC8vIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184237</attachid>
            <date>2013-01-23 08:00:56 -0800</date>
            <delta_ts>2013-01-23 10:43:39 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-107691-20130123165223.patch</filename>
            <type>text/plain</type>
            <size>1601</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M3ZTU3YzdhNTNhZTNj
NTRiN2ZiYzUyMzY1NDZkMTM2ZGRmY2E2NS4uMGE1YzYzOGM4NTk4NWNhZmQxODllMDI2ZjUxZjY4
NmQ4NzE0MTY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAxLTIzICBOb2Ft
IFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSRUdSRVNTSU9OKHIxNDA1
MTgpOiBCcm9rZSBDaHJvbWl1bSBXaW4gYnVpbGQgKGd5cCBmaWxlIG5vdCB1cGRhdGVkKSAoUmVx
dWVzdGVkIGJ5IGFydiBvbiAjd2Via2l0KS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNzY5MQorCisgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4
LiBSZW1vdmVkIFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLiogZnJvbSBXZWJDb3JlLmd5cGku
CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisKIDIwMTMtMDEtMjMgIFJhZmFlbCBXZWluc3Rl
aW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxNDAxMDEp
OiBjYXVzZWQgZGVidWcgYXNzZXJ0cyBpbiBmYXN0L2Zvcm1zL2Fzc29jaWF0ZWQtZWxlbWVudC1j
cmFzaC5odG1sIGFuZCBodG1sNWxpYi9ydW4tdGVtcGxhdGUuaHRtbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDkyMWE1OGNmMGVlMjQwNjcyOWYyY2VjN2JkYjNkNTU1YWU0NmRhMDUuLjg5NWY0OTQ3YTk3
YzJmNmQxYjc0YzE3Zjc3OWExMmU0YmQ2YTNiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQxNTMs
OCArNDE1Myw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgnLAotICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAnLAotICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFu
YWdlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0lkZW50
aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9u
LmgnLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>