<?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>34667</bug_id>
          
          <creation_ts>2010-02-05 15:59:14 -0800</creation_ts>
          <short_desc>Simplified RuntimeEnabledFeatures and corresponding v8 generated code</short_desc>
          <delta_ts>2010-02-10 02:36:55 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yaar Schnitman">yaar</reporter>
          <assigned_to name="Yaar Schnitman">yaar</assigned_to>
          <cc>atwilson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dominicc</cc>
    
    <cc>eric</cc>
    
    <cc>jorlow</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>188353</commentid>
    <comment_count>0</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-02-05 15:59:14 -0800</bug_when>
    <thetext>Simplified RuntimeEnabledFeatures and corresponding v8 generated code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188354</commentid>
    <comment_count>1</comment_count>
      <attachid>48272</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-02-05 16:01:36 -0800</bug_when>
    <thetext>Created attachment 48272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188753</commentid>
    <comment_count>2</comment_count>
      <attachid>48363</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-02-08 13:43:54 -0800</bug_when>
    <thetext>Created attachment 48363
Ready for Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188755</commentid>
    <comment_count>3</comment_count>
      <attachid>48365</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-02-08 13:53:45 -0800</bug_when>
    <thetext>Created attachment 48365
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188756</commentid>
    <comment_count>4</comment_count>
      <attachid>48365</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-02-08 13:57:12 -0800</bug_when>
    <thetext>Comment on attachment 48365
Updated patch

Merged problems broke style &amp; AWS...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188761</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-08 14:18:46 -0800</bug_when>
    <thetext>Removing whitespace makes this patch needlessly large.

Why change Database to DB?  We tend to use full english words when possible in WebKit (obviously not HyperTextMarkupLanguage. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188767</commentid>
    <comment_count>6</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-02-08 14:41:01 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Removing whitespace makes this patch needlessly large.
Sorry about that, but I understand whitespace changes are ok in files I have other edits. They are very trivial though.
&gt; Why change Database to DB?  We tend to use full english words when possible in
&gt; WebKit (obviously not HyperTextMarkupLanguage. :)
I know, but the corresponding JS method this method enabled/disables is named IndexedDB, not IndexedDatabase. For code-generation and low maintenance reasons, the enabler and the JS method must correspond.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189125</commentid>
    <comment_count>7</comment_count>
      <attachid>48365</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-09 12:34:27 -0800</bug_when>
    <thetext>Comment on attachment 48365
Updated patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189299</commentid>
    <comment_count>8</comment_count>
      <attachid>48365</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-10 02:36:47 -0800</bug_when>
    <thetext>Comment on attachment 48365
Updated patch

Clearing flags on attachment: 48365

Committed r54593: &lt;http://trac.webkit.org/changeset/54593&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189300</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-10 02:36:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48272</attachid>
            <date>2010-02-05 16:01:36 -0800</date>
            <delta_ts>2010-02-08 13:43:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-34667-20100205160134.patch</filename>
            <type>text/plain</type>
            <size>40222</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGI0YzUxNS4uMzViZjFmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wMi0wNSAgWWFhciBTY2huaXRt
YW4gIDx5YWFyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTaW1wbGlmaWVkIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYW5kIGNv
cnJlc3BvbmRpbmcgdjggZ2VuZXJhdGVkIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NjY3CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphdWRpb0VuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbE1lZGlh
RWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6aHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6aHRtbFZpZGVvRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFFcnJvckVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkV29ya2VyRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJTb2NrZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFz
ZUVuYWJsZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNldExvY2FsU3RvcmFnZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6bG9jYWxTdG9yYWdlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTZXNzaW9uU3RvcmFnZUVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2Vzc2lvblN0b3JhZ2VFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdE5vdGlm
aWNhdGlvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OndlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldEFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmFwcGxpY2F0aW9uQ2FjaGVFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEdlb2xvY2F0
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpn
ZW9sb2NhdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0SW5kZXhlZERCRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjppbmRleGVkREJFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhO
YXZpZ2F0b3JDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtl
ckNvbnRleHRDdXN0b20uY3BwOgorCiAyMDEwLTAyLTA0ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Bl
ei4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggODI5MTgxMS4uZjcyYzAxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ1NCw2ICs0NTQsOCBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5QmFzZS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5QmFzZS5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9nZW5lcmljL0dlbmVyaWNCaW5kaW5nLmgnLAorICAgICAgICAgICAgJ2Jp
bmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAnLAorICAgICAgICAgICAg
J2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9ET01PYmplY3RXaXRoU1ZHQ29udGV4dC5oJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwJywKQEAgLTc4Niw4ICs3ODgsNiBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9OUFY4T2JqZWN0LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L093bkhhbmRsZS5o
JywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCcs
Ci0gICAgICAgICAgICAnYmluZGluZ3MvdjgvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcCcsCkBAIC0zODIxLDcgKzM4MjEsNyBAQAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2VuYWJsZVNvbGlkQnV0dG9uR2x5cGgu
cG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9lcnJvckljb24u
cG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9lcnJvck1lZGl1
bUljb24ucG5nJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9lcnJv
clJlZERvdC5wbmcnLCAgICAgICAgICAgIAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvSW1hZ2VzL2Vycm9yUmVkRG90LnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9JbWFnZXMvZXhjbHVkZUJ1dHRvbkdseXBoLnBuZycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9JbWFnZXMvZm9jdXNCdXR0b25HbHlwaC5wbmcnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZvcndhcmQucG5nJywKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmRiYjZkCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCkBAIC0wLDAg
KzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgorCisjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5o
IgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCIKKyNpbmNsdWRlICJXZWJTb2Nr
ZXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmlzTG9jYWxTdG9yYWdlRW5hYmxlZCA9IHRydWU7Citib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlzU2Vzc2lvblN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKK2Jvb2wgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6aXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCA9IGZhbHNlOworYm9vbCBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkID0gZmFsc2U7
Citib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzR2VvbG9jYXRpb25FbmFibGVkID0gZmFs
c2U7Citib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSW5kZXhlZERCRW5hYmxlZCA9IGZh
bHNlOworCisjaWYgRU5BQkxFKFZJREVPKQorCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmF1ZGlvRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgp
OworfQorCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omh0bWxNZWRpYUVsZW1lbnRFbmFi
bGVkKCkKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Cit9CisKK2Jv
b2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQoKQorewor
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKK30KKworYm9vbCBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpodG1sVmlkZW9FbGVtZW50RW5hYmxlZCgpCit7CisgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOworfQorCitib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6Om1lZGlhRXJyb3JFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Omlz
QXZhaWxhYmxlKCk7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQor
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRXb3JrZXJFbmFibGVkKCkKK3sKKyAg
ICByZXR1cm4gU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aXNBdmFpbGFibGUoKTsKK30KKyNlbmRp
ZgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJTb2NrZXRFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gV2ViU29ja2V0Ojppc0F2YWlsYWJs
ZSgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCitib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZUVuYWJsZWQoKQoreworICAgIHJldHVybiBEYXRhYmFz
ZTo6aXNBdmFpbGFibGUoKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIGIvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjBmNzhmCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApA
QCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzX2gKKyNkZWZpbmUg
UnVudGltZUVuYWJsZWRGZWF0dXJlc19oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQSBj
bGFzcyB0aGF0IHN0b3JlcyBzdGF0aWMgZW5hYmxlcnMgZm9yIGFsbCBleHBlcmltZW50YWwgZmVh
dHVyZXMuIE5vdGUgdGhhdAorLy8gdGhlIG1ldGhvZCBuYW1lcyBtdXN0IGxpbmUgdXAgd2l0aCB0
aGUgSmF2YVNjcmlwdCBtZXRob2QgdGhleSBlbmFibGUgZm9yIGNvZGUKKy8vIGdlbmVyYXRpb24g
dG8gd29yayBwcm9wZXJseS4KKworY2xhc3MgUnVudGltZUVuYWJsZWRGZWF0dXJlcyB7CitwdWJs
aWM6CisgICAgc3RhdGljIHZvaWQgc2V0TG9jYWxTdG9yYWdlRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBpc0xvY2FsU3RvcmFnZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBzdGF0aWMgYm9v
bCBsb2NhbFN0b3JhZ2VFbmFibGVkKCkgeyByZXR1cm4gaXNMb2NhbFN0b3JhZ2VFbmFibGVkOyB9
CisKKyAgICBzdGF0aWMgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZUVuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpIHsgaXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBzdGF0aWMg
Ym9vbCBzZXNzaW9uU3RvcmFnZUVuYWJsZWQoKSB7IHJldHVybiBpc1Nlc3Npb25TdG9yYWdlRW5h
YmxlZDsgfQorCisgICAgc3RhdGljIHZvaWQgc2V0V2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgaXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQorICAgIHN0YXRpYyBib29sIHdlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkKCkgeyByZXR1
cm4gaXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZDsgfQorCisgICAgc3RhdGljIHZvaWQgc2V0
QXBwbGljYXRpb25DYWNoZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNBcHBsaWNhdGlvbkNh
Y2hlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIGFwcGxpY2F0aW9uQ2Fj
aGVFbmFibGVkKCkgeyByZXR1cm4gaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsgfQorCisgICAg
c3RhdGljIHZvaWQgc2V0R2VvbG9jYXRpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzR2Vv
bG9jYXRpb25FbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgZ2VvbG9jYXRp
b25FbmFibGVkKCkgeyByZXR1cm4gaXNHZW9sb2NhdGlvbkVuYWJsZWQ7IH0KKworICAgIHN0YXRp
YyB2b2lkIHNldEluZGV4ZWREQkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNJbmRleGVkREJF
bmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgaW5kZXhlZERCRW5hYmxlZCgp
IHsgcmV0dXJuIGlzSW5kZXhlZERCRW5hYmxlZDsgfQorCisjaWYgRU5BQkxFKFZJREVPKQorICAg
IHN0YXRpYyBib29sIGF1ZGlvRW5hYmxlZCgpOworICAgIHN0YXRpYyBib29sIGh0bWxNZWRpYUVs
ZW1lbnRFbmFibGVkKCk7CisgICAgc3RhdGljIGJvb2wgaHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQo
KTsKKyAgICBzdGF0aWMgYm9vbCBodG1sVmlkZW9FbGVtZW50RW5hYmxlZCgpOworICAgIHN0YXRp
YyBib29sIG1lZGlhRXJyb3JFbmFibGVkKCk7CisjZW5kaWYKKworI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSUykKKyAgICBzdGF0aWMgYm9vbCBzaGFyZWRXb3JrZXJFbmFibGVkKCk7CisjZW5kaWYK
KworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBzdGF0aWMgYm9vbCB3ZWJTb2NrZXRFbmFi
bGVkKCk7CisjZW5kaWYKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICBzdGF0aWMgYm9vbCBv
cGVuRGF0YWJhc2VFbmFibGVkKCk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICAvLyBOZXZlciBp
bnN0YW50aWF0ZS4KKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkgeyB9CisKKyAgICBzdGF0
aWMgYm9vbCBpc0xvY2FsU3RvcmFnZUVuYWJsZWQ7CisgICAgc3RhdGljIGJvb2wgaXNTZXNzaW9u
U3RvcmFnZUVuYWJsZWQ7CisgICAgc3RhdGljIGJvb2wgaXNXZWJraXROb3RpZmljYXRpb25zRW5h
YmxlZDsKKyAgICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOworICAgIHN0
YXRpYyBib29sIGlzR2VvbG9jYXRpb25FbmFibGVkOworICAgIHN0YXRpYyBib29sIGlzSW5kZXhl
ZERCRW5hYmxlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXNfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3IucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvci5wbQppbmRleCBkYzNjN2MwLi41MDZlOGVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtMSwyNiArMSwyNiBAQAogIwogIyBXZWJLaXQgSURMIHBh
cnNlcgotIyAKKyMKICMgQ29weXJpZ2h0IChDKSAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2ls
ZGZveEBrZGUub3JnPgogIyBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndl
aW5pZ0BnbWFpbC5jb20+CiAjIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBDYW1lcm9uIE1jQ29ybWFjayA8Y2Ft
QG1jYy5pZC5hdT4KLSMgCisjCiAjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKICMgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAjIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMgCisj
CiAjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAogIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgogIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMgCisjCiAjIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICMg
YWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwogIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAogIyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSMgCisjCiAKIHBhY2thZ2UgQ29kZUdlbmVyYXRvcjsKIApAQCAtMzksMTAgKzM5LDEwIEBAIG15
ICRjb2RlR2VuZXJhdG9yID0gMDsKIAogbXkgJHZlcmJvc2UgPSAwOwogCi1teSAlcHJpbWl0aXZl
VHlwZUhhc2ggPSAoImludCIgPT4gMSwgInNob3J0IiA9PiAxLCAibG9uZyIgPT4gMSwgImxvbmcg
bG9uZyIgPT4gMSwgCitteSAlcHJpbWl0aXZlVHlwZUhhc2ggPSAoImludCIgPT4gMSwgInNob3J0
IiA9PiAxLCAibG9uZyIgPT4gMSwgImxvbmcgbG9uZyIgPT4gMSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAidW5zaWduZWQgaW50IiA9PiAxLCAidW5zaWduZWQgc2hvcnQiID0+IDEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgInVuc2lnbmVkIGxvbmciID0+IDEsICJ1bnNpZ25lZCBsb25n
IGxvbmciID0+IDEsIAotICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdCIgPT4gMSwgImRv
dWJsZSIgPT4gMSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgInVuc2lnbmVkIGxvbmciID0+
IDEsICJ1bnNpZ25lZCBsb25nIGxvbmciID0+IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ImZsb2F0IiA9PiAxLCAiZG91YmxlIiA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICJi
b29sZWFuIiA9PiAxLCAidm9pZCIgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiRGF0
ZSIgPT4gMSk7CiAKQEAgLTMyOCwxMCArMzI4LDEwIEBAIHN1YiBJc1NWR0FuaW1hdGVkVHlwZQog
ICAgIG15ICR0eXBlID0gc2hpZnQ7CiAKICAgICByZXR1cm4gMSBpZiAkc3ZnQW5pbWF0ZWRUeXBl
SGFzaHskdHlwZX07Ci0gICAgcmV0dXJuIDA7IAorICAgIHJldHVybiAwOwogfQogCi0jIFVwcGVy
Y2FzZSB0aGUgZmlyc3QgbGV0dGVyIHdoaWxlIHJlc3BlY3RpbmcgV2ViS2l0IHN0eWxlIGd1aWRl
bGluZXMuIAorIyBVcHBlcmNhc2UgdGhlIGZpcnN0IGxldHRlciB3aGlsZSByZXNwZWN0aW5nIFdl
YktpdCBzdHlsZSBndWlkZWxpbmVzLgogIyBFLmcuLCB4bWxFbmNvZGluZyBiZWNvbWVzIFhNTEVu
Y29kaW5nLCBidXQgeG1sbGxhbmcgYmVjb21lcyBYbWxsYW5nLgogc3ViIFdLX3VjZmlyc3QKIHsK
QEAgLTM0MSwxMiArMzQxLDEzIEBAIHN1YiBXS191Y2ZpcnN0CiAgICAgcmV0dXJuICRyZXQ7CiB9
CiAKLSMgTG93ZXJjYXNlIHRoZSBmaXJzdCBsZXR0ZXIgd2hpbGUgcmVzcGVjdGluZyBXZWJLaXQg
c3R5bGUgZ3VpZGVsaW5lcy4gCisjIExvd2VyY2FzZSB0aGUgZmlyc3QgbGV0dGVyIHdoaWxlIHJl
c3BlY3RpbmcgV2ViS2l0IHN0eWxlIGd1aWRlbGluZXMuCiAjIFVSTCBiZWNvbWVzIHVybCwgYnV0
IFNldFVSTCBiZWNvbWVzIHNldFVSTC4KIHN1YiBXS19sY2ZpcnN0CiB7CiAgICAgbXkgKCRvYmpl
Y3QsICRwYXJhbSkgPSBAXzsKICAgICBteSAkcmV0ID0gbGNmaXJzdCgkcGFyYW0pOworICAgICRy
ZXQgPX4gcy9oVE1ML2h0bWwvIGlmICRyZXQgPX4gL15oVE1MLzsKICAgICAkcmV0ID1+IHMvdVJM
L3VybC8gaWYgJHJldCA9fiAvXnVSTC87CiAgICAgJHJldCA9fiBzL2pTL2pzLyBpZiAkcmV0ID1+
IC9ealMvOwogICAgICRyZXQgPX4gcy94TUwveG1sLyBpZiAkcmV0ID1+IC9eeE1MLzsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDM4NjI2MzguLjg1
MmIzYTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpA
QCAtMzAyLDcgKzMwMiw3IEBAIEVORAogICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNv
bnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncyk7CiBFTkQKICAgICB9
Ci0gICAgCisKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1
dGVzfSkgewogICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsK
ICAgICAgICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlczsKQEAgLTMyMywxMSArMzIzLDEwIEBAIEVORAogICAgICAgICB9CiAgICAgfQogCi0g
ICAgR2VuZXJhdGVIZWFkZXJSdW50aW1lRW5hYmxlckRlY2xhcmF0aW9ucyhAZW5hYmxlZEF0UnVu
dGltZSk7CiAgICAgR2VuZXJhdGVIZWFkZXJOYW1lZEFuZEluZGV4ZWRQcm9wZXJ0eUFjY2Vzc29y
cygkZGF0YU5vZGUpOwogICAgIEdlbmVyYXRlSGVhZGVyQ3VzdG9tQ2FsbCgkZGF0YU5vZGUpOwog
ICAgIEdlbmVyYXRlSGVhZGVyQ3VzdG9tSW50ZXJuYWxGaWVsZEluZGljZXMoJGRhdGFOb2RlKTsK
LSAgICAKKwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja0Rv
bWFpblNlY3VyaXR5In0pIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwog
ICBzdGF0aWMgYm9vbCBuYW1lZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhv
c3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGtleSwgdjg6OkFjY2Vzc1R5cGUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IGRhdGEpOwpAQCAtMzYxLDcgKzM2MCw3IEBAIHN1YiBHZXRJbnRlcm5hbEZpZWxk
cwogewogICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwogICAgIG15ICRuYW1lID0gJGRhdGFOb2Rl
LT5uYW1lOwotICAgIAorCiAgICAgIyBGSVhNRTogSSBhbSBoaWRlb3VzIGFuZCBoYXJkLWNvZGVk
LiAgTWFrZSBtZSBiZWF1dGlmdWwuCiAgICAgcmV0dXJuICgiY2FjaGVJbmRleCIsICJpbXBsZW1l
bnRhdGlvbkluZGV4IikgaWYgKCRuYW1lIGVxICJEb2N1bWVudCIpIHx8ICgkbmFtZSBlcSAiU1ZH
RG9jdW1lbnQiKTsKICAgICByZXR1cm4gKCJjYWNoZUluZGV4IiwgImltcGxlbWVudGF0aW9uSW5k
ZXgiLCAibWFya2VySW5kZXgiLCAic2hhZG93SW5kZXgiKSBpZiAkbmFtZSBlcSAiSFRNTERvY3Vt
ZW50IjsKQEAgLTQxNywyNSArNDE2LDYgQEAgRU5ECiBFTkQKIH0KIAotc3ViIEdlbmVyYXRlSGVh
ZGVyUnVudGltZUVuYWJsZXJEZWNsYXJhdGlvbnMKLXsKLSAgICBteSBAZW5hYmxlZEF0UnVudGlt
ZSA9IEBfOwotICAgIAotICAgIGZvcmVhY2ggbXkgJHJ1bnRpbWVfYXR0ciAoQGVuYWJsZWRBdFJ1
bnRpbWUpIHsKLSAgICAgICAgbXkgJGVuYWJsZWRBdFJ1bnRpbWVDb25kaXRpb25hbFN0cmluZyA9
IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJHJ1bnRpbWVfYXR0ci0+c2lnbmF0dXJlKTsKLSAg
ICAgICAgbXkgJGVuYWJsZXIgPSAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkcnVudGltZV9h
dHRyLT5zaWduYXR1cmUtPm5hbWUpOwotICAgICAgICBpZiAoJGVuYWJsZWRBdFJ1bnRpbWVDb25k
aXRpb25hbFN0cmluZykgewotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuI2lm
ICR7ZW5hYmxlZEF0UnVudGltZUNvbmRpdGlvbmFsU3RyaW5nfVxuIik7Ci0gICAgICAgIH0KLSAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwotICBzdGF0aWMgYm9vbCAke2VuYWJs
ZXJ9RW5hYmxlZCgpOwotRU5ECi0gICAgICAgIGlmICgkZW5hYmxlZEF0UnVudGltZUNvbmRpdGlv
bmFsU3RyaW5nKSB7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4i
KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogbXkgJWluZGV4ZXJTcGVjaWFsQ2FzZXMgPSAoCiAg
ICAgIlN0b3JhZ2UiID0+IDEsCiAgICAgIkhUTUxBcHBsZXRFbGVtZW50IiA9PiAxLApAQCAtNDcz
LDcgKzQ1Myw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlck5hbWVkQW5kSW5kZXhlZFByb3BlcnR5QWNj
ZXNzb3JzCiAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW5kZXhlZFByb3BlcnR5R2V0
dGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsKIEVORAog
ICAgIH0KLSAgICAgIAorCiAgICAgaWYgKCRpc0luZGV4ZXJTcGVjaWFsQ2FzZSB8fCAkaGFzQ3Vz
dG9tSW5kZXhlZFNldHRlcikgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7
CiAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW5kZXhlZFByb3BlcnR5U2V0dGVyKHVp
bnQzMl90IGluZGV4LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbyk7CkBAIC01MDksNyArNDg5LDcgQEAgRU5ECiBzdWIgR2VuZXJhdGVIZWFk
ZXJDdXN0b21DYWxsCiB7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7Ci0gICAgCisKICAgICBp
ZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ2FsbCJ9KSB7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Y2FsbEFzRnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7XG4iKTsKICAgICB9
CkBAIC05OTksNyArOTc5LDcgQEAgc3ViIEdldEZ1bmN0aW9uVGVtcGxhdGVDYWxsYmFja05hbWUK
IHsKICAgICAkZnVuY3Rpb24gPSBzaGlmdDsKICAgICAkZGF0YU5vZGUgPSBzaGlmdDsKLSAgICAK
KwogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOwogICAgIG15ICRuYW1l
ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAKQEAgLTEwNjcsNyArMTA0Nyw3IEBAIEVO
RAogIiAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiIgLgogIiAgICB9XG4i
KTsKICAgICB9Ci0gICAgCisKICAgICBteSAkcmFpc2VzRXhjZXB0aW9ucyA9IEB7JGZ1bmN0aW9u
LT5yYWlzZXNFeGNlcHRpb25zfTsKICAgICBpZiAoISRyYWlzZXNFeGNlcHRpb25zKSB7CiAgICAg
ICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CkBA
IC0xMTUyLDcgKzExMzIsNyBAQCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpO1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIik7
CiAgICAgfQotICAgIAorCiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgfVxuXG4iKTsK
IH0KIApAQCAtMTQ3NSw2ICsxNDU1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAog
ICAgIHB1c2goQGltcGxGaXhlZEhlYWRlciwKICAgICAgICAgICIjaW5jbHVkZSBcImNvbmZpZy5o
XCJcbiIgLgorICAgICAgICAgIiNpbmNsdWRlIFwiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oXCJc
biIgLgogICAgICAgICAgIiNpbmNsdWRlIFwiVjhQcm94eS5oXCJcbiIgLgogICAgICAgICAgIiNp
bmNsdWRlIFwiVjhCaW5kaW5nLmhcIlxuIiAuCiAgICAgICAgICAiI2luY2x1ZGUgXCJWOEJpbmRp
bmdTdGF0ZS5oXCJcbiIgLgpAQCAtMTU0Myw3ICsxNTI0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICBpZiAoJGhhc0NvbnN0cnVjdG9ycykgewogICAgICAgICBHZW5lcmF0ZUNv
bnN0cnVjdG9yR2V0dGVyKCRpbXBsQ2xhc3NOYW1lLCAkY2xhc3NJbmRleCk7CiAgICAgfQotICAg
CisKICAgICBteSAkaW5kZXhlcjsKICAgICBteSAkbmFtZWRQcm9wZXJ0eUdldHRlcjsKICAgICAj
IEdlbmVyYXRlIG1ldGhvZHMgZm9yIGZ1bmN0aW9ucy4KQEAgLTE2MDQsNyArMTU4NSw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0
ZURhdGEoJGRhdGFOb2RlLCAkYXR0cmlidXRlcyk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAifTtcbiIpOwogICAgIH0KLSAgICAKKwogICAgICMgU2V0dXAgdGFibGUgb2Ygc3RhbmRhcmQg
Y2FsbGJhY2sgZnVuY3Rpb25zCiAgICAgJG51bV9jYWxsYmFja3MgPSAwOwogICAgICRoYXNfY2Fs
bGJhY2tzID0gMDsKQEAgLTE3MDIsNyArMTY4Myw3IEBAIEVORAogICAgICAgICAkcGFyZW50Q2xh
c3NJbmRleCA9IHVjKCRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZSgkcGFyZW50KSk7CiAgICAg
ICAgIGxhc3Q7CiAgICAgfQotICAgIAorCiAgICAgIyBHZW5lcmF0ZSB0aGUgdGVtcGxhdGUgY29u
ZmlndXJhdGlvbiBtZXRob2QKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlJHtjbGFzc05h
bWV9VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MpIHsK
QEAgLTE3MTksNyArMTcwMCw3IEBAIEVORAogICAgICAgTlVMTCwgMCwKIEVORAogICAgIH0KLSAg
ICAKKwogICAgIGlmICgkaGFzX2NhbGxiYWNrcykgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgPDxFTkQpOwogICAgICAgJHtpbnRlcmZhY2VOYW1lfV9jYWxsYmFja3MsIHNpemVvZigke2lu
dGVyZmFjZU5hbWV9X2NhbGxiYWNrcykvc2l6ZW9mKCoke2ludGVyZmFjZU5hbWV9X2NhbGxiYWNr
cykpOwpAQCAtMTczNywyMCArMTcxOCwyMSBAQCBFTkQKICAgICB9CiAKICAgICBpZiAoJGFjY2Vz
c19jaGVjayBvciBAZW5hYmxlZEF0UnVudGltZSBvciBAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSBv
ciAkaGFzX2NvbnN0YW50cykgewotICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKICAgdjg6OkxvY2FsPHY4OjpPYmplY3RU
ZW1wbGF0ZT4gaW5zdGFuY2UgPSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvID0gZGVzYy0+UHJvdG90eXBlVGVtcGxhdGUoKTsK
IEVORAogICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50LCAgIiAgJGFjY2Vzc19jaGVja1xu
Iik7Ci0gICAgCisKICAgICAjIFNldHVwIHRoZSBlbmFibGUtYXQtcnVudGltZSBhdHRycyBpZiB3
ZSBoYXZlIHRoZW0KICAgICBmb3JlYWNoIG15ICRydW50aW1lX2F0dHIgKEBlbmFibGVkQXRSdW50
aW1lKSB7Ci0gICAgICAgICRlbmFibGVfZnVuY3Rpb24gPSAkaW50ZXJmYWNlTmFtZSAuICI6OiIg
LiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkcnVudGltZV9hdHRyLT5zaWduYXR1cmUtPm5h
bWUpOworICAgICAgICAjIEEgZnVuY3Rpb24gbmFtZWQgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
e21ldGhvZE5hbWV9RW5hYmxlZCgpIG5lZWQgdG8gYmUgd3JpdHRlbiBieSBoYW5kLgorICAgICAg
ICAkZW5hYmxlX2Z1bmN0aW9uID0gIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OiIgLiAkY29kZUdl
bmVyYXRvci0+V0tfbGNmaXJzdCgkcnVudGltZV9hdHRyLT5zaWduYXR1cmUtPm5hbWUpIC4gIkVu
YWJsZWQiOwogICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZUNvbmRpdGlv
bmFsU3RyaW5nKCRydW50aW1lX2F0dHItPnNpZ25hdHVyZSk7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFY4JHtlbmFibGVfZnVu
Y3Rpb259RW5hYmxlZCgpKSB7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKSB7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID1cXFxu
Iik7CiAgICAgICAgIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlTmFt
ZSwgJHJ1bnRpbWVfYXR0ciwgIjsiLCAiICAgICIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgPDxFTkQpOwpAQCAtMTc5MCw4ICsxNzcyLDggQEAgRU5ECiAgICAgICAgIG15ICRjb25kaXRp
b25hbCA9ICIiOwogICAgICAgICBpZiAoJGF0dHJFeHQtPnsiRW5hYmxlZEF0UnVudGltZSJ9KSB7
CiAgICAgICAgICAgICAjIE9ubHkgY2FsbCBTZXQoKS9TZXRBY2Nlc3NvcigpIGlmIHRoaXMgbWV0
aG9kIHNob3VsZCBiZSBlbmFibGVkCi0gICAgICAgICAgICAkZW5hYmxlX2Z1bmN0aW9uID0gJGlu
dGVyZmFjZU5hbWUgLiAiOjoiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPm5hbWUpOwotICAgICAgICAgICAgJGNvbmRpdGlvbmFsID0gImlmIChWOCR7
ZW5hYmxlX2Z1bmN0aW9ufUVuYWJsZWQoKSlcbiI7CisgICAgICAgICAgICAkZW5hYmxlX2Z1bmN0
aW9uID0gIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OiIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNm
aXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSkgLiAiRW5hYmxlZCI7CisgICAgICAgICAg
ICAkY29uZGl0aW9uYWwgPSAiaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKVxuIjsKICAgICAgICAg
fQogCiAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHkifSAm
JgpAQCAtMTgzOCwyNCArMTgyMCwyNCBAQCBFTkQKIAogICAgICAgIyBOb3JtYWwgZnVuY3Rpb24g
Y2FsbCBpcyBhIHRlbXBsYXRlCiAgICAgICBteSAkY2FsbGJhY2sgPSBHZXRGdW5jdGlvblRlbXBs
YXRlQ2FsbGJhY2tOYW1lKCRmdW5jdGlvbiwgJGRhdGFOb2RlKTsKLSAgICAgIAorCiAgICAgICBp
ZiAoJHByb3BlcnR5X2F0dHJpYnV0ZXMgZXEgInY4OjpEb250RGVsZXRlIikgewogICAgICAgICAg
ICRwcm9wZXJ0eV9hdHRyaWJ1dGVzID0gIiI7CiAgICAgICB9IGVsc2UgewogICAgICAgICAgICRw
cm9wZXJ0eV9hdHRyaWJ1dGVzID0gIiwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
PigkcHJvcGVydHlfYXR0cmlidXRlcykiOwogICAgICAgfQotICAgICAgCisKICAgICAgIGlmICgk
dGVtcGxhdGUgZXEgInByb3RvIiAmJiAkY29uZGl0aW9uYWwgZXEgIiIgJiYgJHNpZ25hdHVyZSBl
cSAiZGVmYXVsdF9zaWduYXR1cmUiICYmICRwcm9wZXJ0eV9hdHRyaWJ1dGVzIGVxICIiKSB7CiAg
ICAgICAgICAgIyBTdGFuZGFyZCB0eXBlIG9mIGNhbGxiYWNrLCBhbHJlYWR5IGNyZWF0ZWQgaW4g
dGhlIGJhdGNoLCBzbyBza2lwIGl0IGhlcmUuCiAgICAgICAgICAgbmV4dDsKICAgICAgIH0KLSAg
ICAgIAorCiAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogICAke2NvbmRpdGlvbmFs
fSR0ZW1wbGF0ZS0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiJG5hbWUiKSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldygkY2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCAke3NpZ25hdHVy
ZX0pJHByb3BlcnR5X2F0dHJpYnV0ZXMpOwogRU5ECiAgICAgICAkbnVtX2NhbGxiYWNrcysrOwog
ICAgIH0KLSAgICAKKwogICAgIGRpZSAiV3JvbmcgbnVtYmVyIG9mIGNhbGxiYWNrcyBnZW5lcmF0
ZWQgZm9yICRpbnRlcmZhY2VOYW1lICgkbnVtX2NhbGxiYWNrcywgc2hvdWxkIGJlICR0b3RhbF9m
dW5jdGlvbnMpIiBpZiAkbnVtX2NhbGxiYWNrcyAhPSAkdG90YWxfZnVuY3Rpb25zOwogCiAgICAg
aWYgKCRoYXNfY29uc3RhbnRzKSB7CkBAIC0xODYzLDExICsxODQ1LDExIEBAIEVORAogICBiYXRj
aENvbmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywgJHtpbnRlcmZhY2VOYW1lfV9jb25zdHMs
IHNpemVvZigke2ludGVyZmFjZU5hbWV9X2NvbnN0cykvc2l6ZW9mKCoke2ludGVyZmFjZU5hbWV9
X2NvbnN0cykpOwogRU5ECiAgICAgfQotICAgIAorCiAgICAgIyBTcGVjaWFsIGNhc2VzCiAgICAg
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCA8PEVORCk7Ci0gCisKICAgcHJvdG8tPlNldEludGVybmFsRmllbGRDb3VudChWOERP
TVdpbmRvdzo6aW50ZXJuYWxGaWVsZENvdW50KTsKICAgZGVzYy0+U2V0SGlkZGVuUHJvdG90eXBl
KHRydWUpOwogICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4RE9NV2luZG93Ojpp
bnRlcm5hbEZpZWxkQ291bnQpOwpAQCAtMTg3OSw4ICsxODYxLDggQEAgRU5ECiAgICAgfQogICAg
IGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTG9jYXRpb24iKSB7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCA8PEVORCk7Ci0gCi0gIC8vIEZvciBzZWN1cml0eSByZWFzb25zLCB0aGVzZSBmdW5j
dGlvbnMgYXJlIG9uIHRoZSBpbnN0YW5jZSBpbnN0ZWFkIAorCisgIC8vIEZvciBzZWN1cml0eSBy
ZWFzb25zLCB0aGVzZSBmdW5jdGlvbnMgYXJlIG9uIHRoZSBpbnN0YW5jZSBpbnN0ZWFkCiAgIC8v
IG9mIG9uIHRoZSBwcm90b3R5cGUgb2JqZWN0IHRvIGluc3VyZSB0aGF0IHRoZXkgY2Fubm90IGJl
IG92ZXJ3cml0dGVuLgogICBpbnN0YW5jZS0+U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3KCJy
ZWxvYWQiKSwgVjhMb2NhdGlvbjo6cmVsb2FkQWNjZXNzb3JHZXR0ZXIsIDAsIHY4OjpIYW5kbGU8
djg6OlZhbHVlPigpLCB2ODo6QUxMX0NBTl9SRUFELCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlIHwgdjg6OlJlYWRPbmx5KSk7CiAgIGluc3RhbmNlLT5T
ZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoInJlcGxhY2UiKSwgVjhMb2NhdGlvbjo6cmVwbGFj
ZUFjY2Vzc29yR2V0dGVyLCAwLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OkFMTF9DQU5f
UkVBRCwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6RG9udERlbGV0ZSB8
IHY4OjpSZWFkT25seSkpOwpAQCAtMTg5Myw3ICsxODc1LDcgQEAgRU5ECiAgICAgICAgICRuYXRp
dmVUeXBlID0gIlY4U1ZHUE9EVHlwZVdyYXBwZXI8JHtuYXRpdmVUeXBlfT4iOwogICAgIH0KICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAKKwogICAvLyBDdXN0b20gdG9TdHJpbmcg
dGVtcGxhdGUKICAgZGVzYy0+U2V0KGdldFRvU3RyaW5nTmFtZSgpLCBnZXRUb1N0cmluZ1RlbXBs
YXRlKCkpOwogICByZXR1cm4gZGVzYzsKQEAgLTE5MTAsNyArMTg5Miw3IEBAIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX06OkdldFRlbXBsYXRlKCkgewog
fQogCiAke25hdGl2ZVR5cGV9KiAke2NsYXNzTmFtZX06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gb2JqZWN0KSB7Ci0gIHJldHVybiByZWludGVycHJldF9jYXN0PCR7bmF0aXZlVHlw
ZX0qPihvYmplY3QtPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmpl
Y3RJbmRleCkpOyAKKyAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8JHtuYXRpdmVUeXBlfSo+KG9i
amVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4
KSk7CiB9CiAKIGJvb2wgJHtjbGFzc05hbWV9OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUpIHsKQEAgLTE5MzEsNyArMTkxMyw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3RUZW1wbGF0ZT4gVjhET01XaW5kb3c6OkdldFNoYWRvd09iamVjdFRlbXBsYXRlKCkgewog
fQogRU5ECiAgICAgfQotICAgIAorCiAgICAgR2VuZXJhdGVUb1Y4Q29udmVydGVycygkZGF0YU5v
ZGUsICRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkbmF0aXZlVHlwZSk7CiAKICAgICBwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOwpAQCAtMTk0MSwxOSArMTkyMywxOSBAQCBFTkQKICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7CiB9CiAKLXN1YiBHZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzIAor
c3ViIEdlbmVyYXRlVG9WOENvbnZlcnRlcnMKIHsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsK
ICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogICAgIG15ICRjbGFzc05hbWUgPSBzaGlm
dDsKICAgICBteSAkbmF0aXZlVHlwZSA9IHNoaWZ0OwotICAgIAorCiAgICAgbXkgJHdyYXBwZXJU
eXBlID0gIlY4Q2xhc3NJbmRleDo6IiAuIHVjKCRpbnRlcmZhY2VOYW1lKTsKICAgICBteSAkZG9t
TWFwRnVuY3Rpb24gPSBHZXREb21NYXBGdW5jdGlvbigkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1l
KTsKICAgICBteSAkZm9yY2VOZXdPYmplY3RJbnB1dCA9IElzRE9NTm9kZVR5cGUoJGludGVyZmFj
ZU5hbWUpID8gIiwgYm9vbCBmb3JjZU5ld09iamVjdCIgOiAiIjsKICAgICBteSAkZm9yY2VOZXdP
YmplY3RDYWxsID0gSXNET01Ob2RlVHlwZSgkaW50ZXJmYWNlTmFtZSkgPyAiLCBmb3JjZU5ld09i
amVjdCIgOiAiIjsKLSAgICAKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOyAgIAorCisg
ICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiAk
e2NsYXNzTmFtZX06OndyYXAoJHtuYXRpdmVUeXBlfSogaW1wbCR7Zm9yY2VOZXdPYmplY3RJbnB1
dH0pIHsKICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyOwpAQCAtMjAxOSw3ICsyMDAx
LDcgQEAgRU5ECiAgICAgY29udGV4dC0+RXhpdCgpOwogRU5ECiAgICAgfQotICAgIAorCiAgICAg
cHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAg
IHJldHVybiB3cmFwcGVyOwpAQCAtMjA0NSw3ICsyMDI3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjgoUGFzc1JlZlB0cjwke25hdGl2ZVR5cGV9ID4gaW1wbCR7Zm9yY2VOZXdPYmplY3RJ
bnB1dH0KIH0KIEVORAogICAgIH0KLSAgICAKKwogICAgIGlmICghSGFzQ3VzdG9tVG9WOEltcGxl
bWVudGF0aW9uKCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpKSB7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CiAKQEAgLTIwNzUsNyArMjA1Nyw3IEBAIHN1YiBIYXNDdXN0b21U
b1Y4SW1wbGVtZW50YXRpb24gewogICAgICMgRklYTUU6IFRoaXMgc3Vicm91dGluZSBpcyBsYW1l
LiBQcm9iYWJseSBzaG91bGQgYmUgYW4gLmlkbCBhdHRyaWJ1dGUgKEN1c3RvbVRvVjgpPwogICAg
ICRkYXRhTm9kZSA9IHNoaWZ0OwogICAgICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7Ci0gICAgCisK
ICAgICAjIFdlIGdlbmVyYXRlIGEgY3VzdG9tIGNvbnZlcnRlciAoYnV0IEpTQyBkb2Vzbid0KSBm
b3IgdGhlIGZvbGxvd2luZzoKICAgICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiQmFy
SW5mbyI7CiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZU5hbWUgZXEgIkNTU1N0eWxlU2hlZXQi
OwpAQCAtMjA5Miw3ICsyMDc0LDcgQEAgc3ViIEhhc0N1c3RvbVRvVjhJbXBsZW1lbnRhdGlvbiB7
CiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZU5hbWUgZXEgIlNWR0RvY3VtZW50IjsKICAgICBy
ZXR1cm4gMSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiU1ZHRWxlbWVudCI7CiAgICAgcmV0dXJuIDEg
aWYgJGludGVyZmFjZU5hbWUgZXEgIlNjcmVlbiI7Ci0gICAgCisKICAgICAjIFdlIGRvbid0IGdl
bmVyYXRlIGEgY3VzdG9tIGNvbnZlcnRlciAoYnV0IEpTQyBkb2VzKSBmb3IgdGhlIGZvbGxvd2lu
ZzoKICAgICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiQWJzdHJhY3RXb3JrZXIiOwog
ICAgIHJldHVybiAwIGlmICRpbnRlcmZhY2VOYW1lIGVxICJDYW52YXNSZW5kZXJpbmdDb250ZXh0
IjsKQEAgLTIzMjEsNyArMjMwMyw3IEBAIHN1YiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZQog
ICAgIH0KIAogICAgICR0eXBlID0gR2V0TmF0aXZlVHlwZSgkdHlwZSwgJHBhcmFtZXRlckluZGV4
ID49IDAgPyAxIDogMCk7Ci0gICAgCisKICAgICBpZiAoJHBhcmFtZXRlckluZGV4ID49IDAgJiYg
JHR5cGUgZXEgIlY4UGFyYW1ldGVyIikgewogICAgICAgICBteSAkbW9kZSA9ICIiOwogICAgICAg
ICBpZiAoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnZlcnRVbmRlZmluZWRP
ck51bGxUb051bGxTdHJpbmcifSkgewpAQCAtMjMzMSw3ICsyMzEzLDcgQEAgc3ViIEdldE5hdGl2
ZVR5cGVGcm9tU2lnbmF0dXJlCiAgICAgICAgIH0KICAgICAgICAgJHR5cGUgLj0gIjwkbW9kZT4i
OwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiAkdHlwZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGE0ODA0ODAuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNMb2Nh
bFN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNT
ZXNzaW9uU3RvcmFnZUVuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojppc05vdGlmaWNhdGlvbnNFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQgPSBmYWxzZTsKLWJvb2wgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6aXNHZW9sb2NhdGlvbkVuYWJsZWQgPSBmYWxzZTsKLWJvb2wgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6aXNJbmRleGVkRGF0YWJhc2VFbmFibGVkID0gZmFsc2U7Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MjgwMDQuLjAwMDAw
MDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
X2gKLSNkZWZpbmUgUnVudGltZUVuYWJsZWRGZWF0dXJlc19oCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotLy8gQSBjbGFzcyB0aGF0IHN0b3JlcyBzdGF0aWMgZW5hYmxlcnMgZm9yIGFsbCBleHBl
cmltZW50YWwgZmVhdHVyZXMKLWNsYXNzIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgewotcHVibGlj
OgotICAgIHN0YXRpYyB2b2lkIHNldExvY2FsU3RvcmFnZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgaXNMb2NhbFN0b3JhZ2VFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wg
bG9jYWxTdG9yYWdlRW5hYmxlZCgpIHsgcmV0dXJuIGlzTG9jYWxTdG9yYWdlRW5hYmxlZDsgfQot
Ci0gICAgc3RhdGljIHZvaWQgc2V0U2Vzc2lvblN0b3JhZ2VFbmFibGVkKGJvb2wgaXNFbmFibGVk
KSB7IGlzU2Vzc2lvblN0b3JhZ2VFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJv
b2wgc2Vzc2lvblN0b3JhZ2VFbmFibGVkKCkgeyByZXR1cm4gaXNTZXNzaW9uU3RvcmFnZUVuYWJs
ZWQ7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGJvb2wgaXNF
bmFibGVkKSB7IGlzTm90aWZpY2F0aW9uc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0
aWMgYm9vbCBub3RpZmljYXRpb25zRW5hYmxlZCgpIHsgcmV0dXJuIGlzTm90aWZpY2F0aW9uc0Vu
YWJsZWQ7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKGJv
b2wgaXNFbmFibGVkKSB7IGlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
LSAgICBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpIHsgcmV0dXJuIGlzQXBw
bGljYXRpb25DYWNoZUVuYWJsZWQ7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldEdlb2xvY2F0aW9u
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0dlb2xvY2F0aW9uRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQotICAgIHN0YXRpYyBib29sIGdlb2xvY2F0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGlzR2Vv
bG9jYXRpb25FbmFibGVkOyB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRJbmRleGVkRGF0YWJhc2VF
bmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzSW5kZXhlZERhdGFiYXNlRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQotICAgIHN0YXRpYyBib29sIGluZGV4ZWREYXRhYmFzZUVuYWJsZWQoKSB7IHJldHVy
biBpc0luZGV4ZWREYXRhYmFzZUVuYWJsZWQ7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBOZXZlciBp
bnN0YW50aWF0ZS4KLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkgeyB9Ci0KLSAgICBzdGF0
aWMgYm9vbCBpc0xvY2FsU3RvcmFnZUVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNTZXNzaW9u
U3RvcmFnZUVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNOb3RpZmljYXRpb25zRW5hYmxlZDsK
LSAgICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOwotICAgIHN0YXRpYyBi
b29sIGlzR2VvbG9jYXRpb25FbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzSW5kZXhlZERhdGFi
YXNlRW5hYmxlZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXNfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGJhNmM3MzguLjU2MmIyNWUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTEsMTAg
KzEsMTAgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICog
bWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE0LDcg
KzE0LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U2NyZWVuLmgiCi0jaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IlNjaGVkdWxlZEFjdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNs
dWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKQEAgLTk2LDkgKzk1LDkgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFdpbmRvd1NldFRpbWVvdXRJbXBsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MsIGJvb2wgc2luZ2wKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdjhTdHJpbmcgPSBmdW5jdGlvbi0+VG9TdHJpbmcoKTsKIAotICAgICAgICAgICAg
Ly8gQmFpbCBvdXQgaWYgc3RyaW5nIGNvbnZlcnNpb24gZmFpbGVkLiAKLSAgICAgICAgICAgIGlm
ICh2OFN0cmluZy5Jc0VtcHR5KCkpIAotICAgICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7IAorICAgICAgICAgICAgLy8gQmFpbCBvdXQgaWYgc3RyaW5nIGNvbnZlcnNpb24gZmFp
bGVkLgorICAgICAgICAgICAgaWYgKHY4U3RyaW5nLklzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCiAgICAgICAgICAgICBmdW5jdGlvblN0cmluZyA9
IHRvV2ViQ29yZVN0cmluZyh2OFN0cmluZyk7CiAgICAgICAgIH0KQEAgLTIyOSw3ICsyMjgsNyBA
QCB2b2lkIFY4RE9NV2luZG93OjpvcGVuZXJBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OgogCiAgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6
Y2FuQWNjZXNzRnJhbWUoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT5mcmFtZSgpLCB0cnVl
KSkKICAgICAgICAgcmV0dXJuOwotICAKKwogICAgIC8vIE9wZW5lciBjYW4gYmUgc2hhZG93ZWQg
aWYgaXQgaXMgaW4gdGhlIHNhbWUgZG9tYWluLgogICAgIC8vIEhhdmUgYSBzcGVjaWFsIGhhbmRs
aW5nIG9mIG51bGwgdmFsdWUgdG8gYmVoYXZlCiAgICAgLy8gbGlrZSBGaXJlZm94LiBTZWUgYnVn
IGh0dHA6Ly9iLzEyMjQ4ODcgJiBodHRwOi8vYi83OTE3MDYuCkBAIC0yNTUsODUgKzI1NCw2IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6QXVkaW9BY2Nlc3NvckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Z2V0Q29u
c3RydWN0b3IoVjhDbGFzc0luZGV4OjpBVURJTywgd2luZG93KTsKIH0KIAotYm9vbCBWOERPTVdp
bmRvdzo6QXVkaW9FbmFibGVkKCkKLXsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxh
YmxlKCk7Ci19Ci0KLWJvb2wgVjhET01XaW5kb3c6OkhUTUxNZWRpYUVsZW1lbnRFbmFibGVkKCkK
LXsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Ci19Ci0KLWJvb2wgVjhE
T01XaW5kb3c6OkhUTUxBdWRpb0VsZW1lbnRFbmFibGVkKCkKLXsKLSAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OmlzQXZhaWxhYmxlKCk7Ci19Ci0KLWJvb2wgVjhET01XaW5kb3c6OkhUTUxWaWRlb0Vs
ZW1lbnRFbmFibGVkKCkKLXsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7
Ci19Ci0KLWJvb2wgVjhET01XaW5kb3c6Ok1lZGlhRXJyb3JFbmFibGVkKCkKLXsKLSAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQotYm9vbCBWOERPTVdpbmRvdzo6U2hhcmVkV29ya2VyRW5hYmxlZCgp
Ci17Ci0gICAgcmV0dXJuIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmlzQXZhaWxhYmxlKCk7Ci19
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLWJvb2wgVjhET01XaW5kb3c6Oldl
YlNvY2tldEVuYWJsZWQoKQotewotICAgIHJldHVybiBXZWJTb2NrZXQ6OmlzQXZhaWxhYmxlKCk7
Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShEQVRBQkFTRSkKLWJvb2wgVjhET01XaW5kb3c6Ok9w
ZW5EYXRhYmFzZUVuYWJsZWQoKQotewotICAgIHJldHVybiBEYXRhYmFzZTo6aXNBdmFpbGFibGUo
KTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi1ib29sIFY4RE9N
V2luZG93OjpJbmRleGVkREJFbmFibGVkKCkKLXsKLSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6aW5kZXhlZERhdGFiYXNlRW5hYmxlZCgpOwotfQotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoRE9NX1NUT1JBR0UpCi1ib29sIFY4RE9NV2luZG93OjpMb2NhbFN0b3JhZ2VFbmFibGVkKCkK
LXsKLSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bG9jYWxTdG9yYWdlRW5hYmxl
ZCgpOwotfQotCi1ib29sIFY4RE9NV2luZG93OjpTZXNzaW9uU3RvcmFnZUVuYWJsZWQoKQotewot
ICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXNzaW9uU3RvcmFnZUVuYWJsZWQo
KTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi1ib29sIFY4RE9NV2lu
ZG93OjpXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6Om5vdGlmaWNhdGlvbnNFbmFibGVkKCk7Ci19Ci0jZW5kaWYKLQotI2lm
IEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi1ib29sIFY4RE9NV2luZG93OjpBcHBs
aWNhdGlvbkNhY2hlRW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7Ci19CiAjZW5kaWYKIAogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RE9NV2luZG93OjpJbWFnZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtNTk2LDcgKzUx
Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9n
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICAvLyBkZWZhdWx0IGhlcmUgY2FtZSBm
cm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFLgogICAgIHdpbmRvd0ZlYXR1cmVzLmhl
aWdodCA9IFdpbmRvd0ZlYXR1cmVzOjpmbG9hdEZlYXR1cmUoZmVhdHVyZXMsICJkaWFsb2doZWln
aHQiLCAxMDAsIHNjcmVlblJlY3QuaGVpZ2h0KCksIDQ1MCk7CiAgICAgd2luZG93RmVhdHVyZXMu
aGVpZ2h0U2V0ID0gdHJ1ZTsKLSAgCisKICAgICB3aW5kb3dGZWF0dXJlcy54ID0gV2luZG93RmVh
dHVyZXM6OmZsb2F0RmVhdHVyZShmZWF0dXJlcywgImRpYWxvZ2xlZnQiLCBzY3JlZW5SZWN0Lngo
KSwgc2NyZWVuUmVjdC5yaWdodCgpIC0gd2luZG93RmVhdHVyZXMud2lkdGgsIC0xKTsKICAgICB3
aW5kb3dGZWF0dXJlcy54U2V0ID0gd2luZG93RmVhdHVyZXMueCA+IDA7CiAgICAgd2luZG93RmVh
dHVyZXMueSA9IFdpbmRvd0ZlYXR1cmVzOjpmbG9hdEZlYXR1cmUoZmVhdHVyZXMsICJkaWFsb2d0
b3AiLCBzY3JlZW5SZWN0LnkoKSwgc2NyZWVuUmVjdC5ib3R0b20oKSAtIHdpbmRvd0ZlYXR1cmVz
LmhlaWdodCwgLTEpOwpAQCAtNjk1LDExICs2MTUsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4RE9NV2luZG93OjpvcGVuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAg
ICBpZiAodG9wT3JQYXJlbnQpIHsKICAgICAgICAgaWYgKCFzaG91bGRBbGxvd05hdmlnYXRpb24o
ZnJhbWUpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgICAKKwogICAg
ICAgICBTdHJpbmcgY29tcGxldGVkVXJsOwogICAgICAgICBpZiAoIXVybFN0cmluZy5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBjb21wbGV0ZWRVcmwgPSBjb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwot
ICAgIAorCiAgICAgICAgIGlmICghY29tcGxldGVkVXJsLmlzRW1wdHkoKSAmJgogICAgICAgICAg
ICAgKCFwcm90b2NvbElzSmF2YVNjcmlwdChjb21wbGV0ZWRVcmwpIHx8IFNjcmlwdENvbnRyb2xs
ZXI6OmlzU2FmZVNjcmlwdChmcmFtZSkpKSB7CiAgICAgICAgICAgICBib29sIHVzZXJHZXN0dXJl
ID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAKaW5kZXggNzU5MjJlNy4uNDJlMTcxOCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20uY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9yQ3VzdG9tLmNwcApAQCAt
MSwxMCArMSwxMCBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogCisgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAt
MTQsNyArMTQsNyBAQAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0zNywxMyArMzcsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi1ib29sIFY4
TmF2aWdhdG9yOjpHZW9sb2NhdGlvbkVuYWJsZWQoKQotewotICAgIHJldHVybiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpnZW9sb2NhdGlvbkVuYWJsZWQoKTsKLX0KLSNlbmRpZgotCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChOYXZpZ2F0b3IqIGltcGwpCiB7CiAgICAgaWYgKCFpbXBsKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAKaW5kZXggOWQ1NGY4ZS4uYWIxNGU4YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC0zNSw3ICszNSw2IEBA
CiAKICNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNp
bmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0
aW9uLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5n
LmgiCkBAIC00OCwyMCArNDcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKLWJvb2wgVjhXb3JrZXJDb250ZXh0OjpXZWJraXROb3RpZmljYXRp
b25zRW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om5vdGlm
aWNhdGlvbnNFbmFibGVkKCk7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
LWJvb2wgVjhXb3JrZXJDb250ZXh0OjpXZWJTb2NrZXRFbmFibGVkKCkKLXsKLSAgICByZXR1cm4g
V2ViU29ja2V0Ojppc0F2YWlsYWJsZSgpOwotfQotI2VuZGlmCi0KIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBTZXRUaW1lb3V0T3JJbnRlcnZhbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29s
IHNpbmdsZVNob3QpCiB7CiAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4V29y
a2VyQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48363</attachid>
            <date>2010-02-08 13:43:54 -0800</date>
            <delta_ts>2010-02-08 13:53:41 -0800</delta_ts>
            <desc>Ready for Review</desc>
            <filename>bug-34667-20100208134353.patch</filename>
            <type>text/plain</type>
            <size>41527</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGI0YzUxNS4uMzViZjFmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wMi0wNSAgWWFhciBTY2huaXRt
YW4gIDx5YWFyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTaW1wbGlmaWVkIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYW5kIGNv
cnJlc3BvbmRpbmcgdjggZ2VuZXJhdGVkIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NjY3CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphdWRpb0VuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbE1lZGlh
RWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6aHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6aHRtbFZpZGVvRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFFcnJvckVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkV29ya2VyRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJTb2NrZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFz
ZUVuYWJsZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNldExvY2FsU3RvcmFnZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6bG9jYWxTdG9yYWdlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTZXNzaW9uU3RvcmFnZUVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2Vzc2lvblN0b3JhZ2VFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdE5vdGlm
aWNhdGlvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OndlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldEFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmFwcGxpY2F0aW9uQ2FjaGVFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEdlb2xvY2F0
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpn
ZW9sb2NhdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0SW5kZXhlZERCRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjppbmRleGVkREJFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhO
YXZpZ2F0b3JDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtl
ckNvbnRleHRDdXN0b20uY3BwOgorCiAyMDEwLTAyLTA0ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Bl
ei4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggODI5MTgxMS4uZjcyYzAxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ1NCw2ICs0NTQsOCBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5QmFzZS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5QmFzZS5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9nZW5lcmljL0dlbmVyaWNCaW5kaW5nLmgnLAorICAgICAgICAgICAgJ2Jp
bmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAnLAorICAgICAgICAgICAg
J2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9ET01PYmplY3RXaXRoU1ZHQ29udGV4dC5oJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwJywKQEAgLTc4Niw4ICs3ODgsNiBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9OUFY4T2JqZWN0LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L093bkhhbmRsZS5o
JywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCcs
Ci0gICAgICAgICAgICAnYmluZGluZ3MvdjgvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcCcsCkBAIC0zODIxLDcgKzM4MjEsNyBAQAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2VuYWJsZVNvbGlkQnV0dG9uR2x5cGgu
cG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9lcnJvckljb24u
cG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9lcnJvck1lZGl1
bUljb24ucG5nJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9lcnJv
clJlZERvdC5wbmcnLCAgICAgICAgICAgIAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvSW1hZ2VzL2Vycm9yUmVkRG90LnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9JbWFnZXMvZXhjbHVkZUJ1dHRvbkdseXBoLnBuZycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9JbWFnZXMvZm9jdXNCdXR0b25HbHlwaC5wbmcnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZvcndhcmQucG5nJywKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmRiYjZkCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCkBAIC0wLDAg
KzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgorCisjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5o
IgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCIKKyNpbmNsdWRlICJXZWJTb2Nr
ZXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmlzTG9jYWxTdG9yYWdlRW5hYmxlZCA9IHRydWU7Citib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlzU2Vzc2lvblN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKK2Jvb2wgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6aXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCA9IGZhbHNlOworYm9vbCBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkID0gZmFsc2U7
Citib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzR2VvbG9jYXRpb25FbmFibGVkID0gZmFs
c2U7Citib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSW5kZXhlZERCRW5hYmxlZCA9IGZh
bHNlOworCisjaWYgRU5BQkxFKFZJREVPKQorCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmF1ZGlvRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgp
OworfQorCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omh0bWxNZWRpYUVsZW1lbnRFbmFi
bGVkKCkKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Cit9CisKK2Jv
b2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQoKQorewor
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKK30KKworYm9vbCBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpodG1sVmlkZW9FbGVtZW50RW5hYmxlZCgpCit7CisgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOworfQorCitib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6Om1lZGlhRXJyb3JFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Omlz
QXZhaWxhYmxlKCk7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQor
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRXb3JrZXJFbmFibGVkKCkKK3sKKyAg
ICByZXR1cm4gU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aXNBdmFpbGFibGUoKTsKK30KKyNlbmRp
ZgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJTb2NrZXRFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gV2ViU29ja2V0Ojppc0F2YWlsYWJs
ZSgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCitib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZUVuYWJsZWQoKQoreworICAgIHJldHVybiBEYXRhYmFz
ZTo6aXNBdmFpbGFibGUoKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIGIvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjBmNzhmCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApA
QCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzX2gKKyNkZWZpbmUg
UnVudGltZUVuYWJsZWRGZWF0dXJlc19oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQSBj
bGFzcyB0aGF0IHN0b3JlcyBzdGF0aWMgZW5hYmxlcnMgZm9yIGFsbCBleHBlcmltZW50YWwgZmVh
dHVyZXMuIE5vdGUgdGhhdAorLy8gdGhlIG1ldGhvZCBuYW1lcyBtdXN0IGxpbmUgdXAgd2l0aCB0
aGUgSmF2YVNjcmlwdCBtZXRob2QgdGhleSBlbmFibGUgZm9yIGNvZGUKKy8vIGdlbmVyYXRpb24g
dG8gd29yayBwcm9wZXJseS4KKworY2xhc3MgUnVudGltZUVuYWJsZWRGZWF0dXJlcyB7CitwdWJs
aWM6CisgICAgc3RhdGljIHZvaWQgc2V0TG9jYWxTdG9yYWdlRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBpc0xvY2FsU3RvcmFnZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBzdGF0aWMgYm9v
bCBsb2NhbFN0b3JhZ2VFbmFibGVkKCkgeyByZXR1cm4gaXNMb2NhbFN0b3JhZ2VFbmFibGVkOyB9
CisKKyAgICBzdGF0aWMgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZUVuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpIHsgaXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBzdGF0aWMg
Ym9vbCBzZXNzaW9uU3RvcmFnZUVuYWJsZWQoKSB7IHJldHVybiBpc1Nlc3Npb25TdG9yYWdlRW5h
YmxlZDsgfQorCisgICAgc3RhdGljIHZvaWQgc2V0V2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgaXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQorICAgIHN0YXRpYyBib29sIHdlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkKCkgeyByZXR1
cm4gaXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZDsgfQorCisgICAgc3RhdGljIHZvaWQgc2V0
QXBwbGljYXRpb25DYWNoZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNBcHBsaWNhdGlvbkNh
Y2hlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIGFwcGxpY2F0aW9uQ2Fj
aGVFbmFibGVkKCkgeyByZXR1cm4gaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsgfQorCisgICAg
c3RhdGljIHZvaWQgc2V0R2VvbG9jYXRpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzR2Vv
bG9jYXRpb25FbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgZ2VvbG9jYXRp
b25FbmFibGVkKCkgeyByZXR1cm4gaXNHZW9sb2NhdGlvbkVuYWJsZWQ7IH0KKworICAgIHN0YXRp
YyB2b2lkIHNldEluZGV4ZWREQkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNJbmRleGVkREJF
bmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgaW5kZXhlZERCRW5hYmxlZCgp
IHsgcmV0dXJuIGlzSW5kZXhlZERCRW5hYmxlZDsgfQorCisjaWYgRU5BQkxFKFZJREVPKQorICAg
IHN0YXRpYyBib29sIGF1ZGlvRW5hYmxlZCgpOworICAgIHN0YXRpYyBib29sIGh0bWxNZWRpYUVs
ZW1lbnRFbmFibGVkKCk7CisgICAgc3RhdGljIGJvb2wgaHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQo
KTsKKyAgICBzdGF0aWMgYm9vbCBodG1sVmlkZW9FbGVtZW50RW5hYmxlZCgpOworICAgIHN0YXRp
YyBib29sIG1lZGlhRXJyb3JFbmFibGVkKCk7CisjZW5kaWYKKworI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSUykKKyAgICBzdGF0aWMgYm9vbCBzaGFyZWRXb3JrZXJFbmFibGVkKCk7CisjZW5kaWYK
KworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBzdGF0aWMgYm9vbCB3ZWJTb2NrZXRFbmFi
bGVkKCk7CisjZW5kaWYKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICBzdGF0aWMgYm9vbCBv
cGVuRGF0YWJhc2VFbmFibGVkKCk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICAvLyBOZXZlciBp
bnN0YW50aWF0ZS4KKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkgeyB9CisKKyAgICBzdGF0
aWMgYm9vbCBpc0xvY2FsU3RvcmFnZUVuYWJsZWQ7CisgICAgc3RhdGljIGJvb2wgaXNTZXNzaW9u
U3RvcmFnZUVuYWJsZWQ7CisgICAgc3RhdGljIGJvb2wgaXNXZWJraXROb3RpZmljYXRpb25zRW5h
YmxlZDsKKyAgICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOworICAgIHN0
YXRpYyBib29sIGlzR2VvbG9jYXRpb25FbmFibGVkOworICAgIHN0YXRpYyBib29sIGlzSW5kZXhl
ZERCRW5hYmxlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXNfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3IucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvci5wbQppbmRleCBkYzNjN2MwLi41MDZlOGVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtMSwyNiArMSwyNiBAQAogIwogIyBXZWJLaXQgSURMIHBh
cnNlcgotIyAKKyMKICMgQ29weXJpZ2h0IChDKSAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2ls
ZGZveEBrZGUub3JnPgogIyBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndl
aW5pZ0BnbWFpbC5jb20+CiAjIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBDYW1lcm9uIE1jQ29ybWFjayA8Y2Ft
QG1jYy5pZC5hdT4KLSMgCisjCiAjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKICMgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAjIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMgCisj
CiAjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAogIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgogIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMgCisjCiAjIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICMg
YWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwogIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAogIyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSMgCisjCiAKIHBhY2thZ2UgQ29kZUdlbmVyYXRvcjsKIApAQCAtMzksMTAgKzM5LDEwIEBAIG15
ICRjb2RlR2VuZXJhdG9yID0gMDsKIAogbXkgJHZlcmJvc2UgPSAwOwogCi1teSAlcHJpbWl0aXZl
VHlwZUhhc2ggPSAoImludCIgPT4gMSwgInNob3J0IiA9PiAxLCAibG9uZyIgPT4gMSwgImxvbmcg
bG9uZyIgPT4gMSwgCitteSAlcHJpbWl0aXZlVHlwZUhhc2ggPSAoImludCIgPT4gMSwgInNob3J0
IiA9PiAxLCAibG9uZyIgPT4gMSwgImxvbmcgbG9uZyIgPT4gMSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAidW5zaWduZWQgaW50IiA9PiAxLCAidW5zaWduZWQgc2hvcnQiID0+IDEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgInVuc2lnbmVkIGxvbmciID0+IDEsICJ1bnNpZ25lZCBsb25n
IGxvbmciID0+IDEsIAotICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdCIgPT4gMSwgImRv
dWJsZSIgPT4gMSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgInVuc2lnbmVkIGxvbmciID0+
IDEsICJ1bnNpZ25lZCBsb25nIGxvbmciID0+IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ImZsb2F0IiA9PiAxLCAiZG91YmxlIiA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICJi
b29sZWFuIiA9PiAxLCAidm9pZCIgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiRGF0
ZSIgPT4gMSk7CiAKQEAgLTMyOCwxMCArMzI4LDEwIEBAIHN1YiBJc1NWR0FuaW1hdGVkVHlwZQog
ICAgIG15ICR0eXBlID0gc2hpZnQ7CiAKICAgICByZXR1cm4gMSBpZiAkc3ZnQW5pbWF0ZWRUeXBl
SGFzaHskdHlwZX07Ci0gICAgcmV0dXJuIDA7IAorICAgIHJldHVybiAwOwogfQogCi0jIFVwcGVy
Y2FzZSB0aGUgZmlyc3QgbGV0dGVyIHdoaWxlIHJlc3BlY3RpbmcgV2ViS2l0IHN0eWxlIGd1aWRl
bGluZXMuIAorIyBVcHBlcmNhc2UgdGhlIGZpcnN0IGxldHRlciB3aGlsZSByZXNwZWN0aW5nIFdl
YktpdCBzdHlsZSBndWlkZWxpbmVzLgogIyBFLmcuLCB4bWxFbmNvZGluZyBiZWNvbWVzIFhNTEVu
Y29kaW5nLCBidXQgeG1sbGxhbmcgYmVjb21lcyBYbWxsYW5nLgogc3ViIFdLX3VjZmlyc3QKIHsK
QEAgLTM0MSwxMiArMzQxLDEzIEBAIHN1YiBXS191Y2ZpcnN0CiAgICAgcmV0dXJuICRyZXQ7CiB9
CiAKLSMgTG93ZXJjYXNlIHRoZSBmaXJzdCBsZXR0ZXIgd2hpbGUgcmVzcGVjdGluZyBXZWJLaXQg
c3R5bGUgZ3VpZGVsaW5lcy4gCisjIExvd2VyY2FzZSB0aGUgZmlyc3QgbGV0dGVyIHdoaWxlIHJl
c3BlY3RpbmcgV2ViS2l0IHN0eWxlIGd1aWRlbGluZXMuCiAjIFVSTCBiZWNvbWVzIHVybCwgYnV0
IFNldFVSTCBiZWNvbWVzIHNldFVSTC4KIHN1YiBXS19sY2ZpcnN0CiB7CiAgICAgbXkgKCRvYmpl
Y3QsICRwYXJhbSkgPSBAXzsKICAgICBteSAkcmV0ID0gbGNmaXJzdCgkcGFyYW0pOworICAgICRy
ZXQgPX4gcy9oVE1ML2h0bWwvIGlmICRyZXQgPX4gL15oVE1MLzsKICAgICAkcmV0ID1+IHMvdVJM
L3VybC8gaWYgJHJldCA9fiAvXnVSTC87CiAgICAgJHJldCA9fiBzL2pTL2pzLyBpZiAkcmV0ID1+
IC9ealMvOwogICAgICRyZXQgPX4gcy94TUwveG1sLyBpZiAkcmV0ID1+IC9eeE1MLzsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDM4NjI2MzguLjg1
MmIzYTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpA
QCAtMzAyLDcgKzMwMiw3IEBAIEVORAogICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNv
bnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncyk7CiBFTkQKICAgICB9
Ci0gICAgCisKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1
dGVzfSkgewogICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsK
ICAgICAgICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlczsKQEAgLTMyMywxMSArMzIzLDEwIEBAIEVORAogICAgICAgICB9CiAgICAgfQogCi0g
ICAgR2VuZXJhdGVIZWFkZXJSdW50aW1lRW5hYmxlckRlY2xhcmF0aW9ucyhAZW5hYmxlZEF0UnVu
dGltZSk7CiAgICAgR2VuZXJhdGVIZWFkZXJOYW1lZEFuZEluZGV4ZWRQcm9wZXJ0eUFjY2Vzc29y
cygkZGF0YU5vZGUpOwogICAgIEdlbmVyYXRlSGVhZGVyQ3VzdG9tQ2FsbCgkZGF0YU5vZGUpOwog
ICAgIEdlbmVyYXRlSGVhZGVyQ3VzdG9tSW50ZXJuYWxGaWVsZEluZGljZXMoJGRhdGFOb2RlKTsK
LSAgICAKKwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja0Rv
bWFpblNlY3VyaXR5In0pIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwog
ICBzdGF0aWMgYm9vbCBuYW1lZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhv
c3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGtleSwgdjg6OkFjY2Vzc1R5cGUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IGRhdGEpOwpAQCAtMzYxLDcgKzM2MCw3IEBAIHN1YiBHZXRJbnRlcm5hbEZpZWxk
cwogewogICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwogICAgIG15ICRuYW1lID0gJGRhdGFOb2Rl
LT5uYW1lOwotICAgIAorCiAgICAgIyBGSVhNRTogSSBhbSBoaWRlb3VzIGFuZCBoYXJkLWNvZGVk
LiAgTWFrZSBtZSBiZWF1dGlmdWwuCiAgICAgcmV0dXJuICgiY2FjaGVJbmRleCIsICJpbXBsZW1l
bnRhdGlvbkluZGV4IikgaWYgKCRuYW1lIGVxICJEb2N1bWVudCIpIHx8ICgkbmFtZSBlcSAiU1ZH
RG9jdW1lbnQiKTsKICAgICByZXR1cm4gKCJjYWNoZUluZGV4IiwgImltcGxlbWVudGF0aW9uSW5k
ZXgiLCAibWFya2VySW5kZXgiLCAic2hhZG93SW5kZXgiKSBpZiAkbmFtZSBlcSAiSFRNTERvY3Vt
ZW50IjsKQEAgLTQxNywyNSArNDE2LDYgQEAgRU5ECiBFTkQKIH0KIAotc3ViIEdlbmVyYXRlSGVh
ZGVyUnVudGltZUVuYWJsZXJEZWNsYXJhdGlvbnMKLXsKLSAgICBteSBAZW5hYmxlZEF0UnVudGlt
ZSA9IEBfOwotICAgIAotICAgIGZvcmVhY2ggbXkgJHJ1bnRpbWVfYXR0ciAoQGVuYWJsZWRBdFJ1
bnRpbWUpIHsKLSAgICAgICAgbXkgJGVuYWJsZWRBdFJ1bnRpbWVDb25kaXRpb25hbFN0cmluZyA9
IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJHJ1bnRpbWVfYXR0ci0+c2lnbmF0dXJlKTsKLSAg
ICAgICAgbXkgJGVuYWJsZXIgPSAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkcnVudGltZV9h
dHRyLT5zaWduYXR1cmUtPm5hbWUpOwotICAgICAgICBpZiAoJGVuYWJsZWRBdFJ1bnRpbWVDb25k
aXRpb25hbFN0cmluZykgewotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuI2lm
ICR7ZW5hYmxlZEF0UnVudGltZUNvbmRpdGlvbmFsU3RyaW5nfVxuIik7Ci0gICAgICAgIH0KLSAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwotICBzdGF0aWMgYm9vbCAke2VuYWJs
ZXJ9RW5hYmxlZCgpOwotRU5ECi0gICAgICAgIGlmICgkZW5hYmxlZEF0UnVudGltZUNvbmRpdGlv
bmFsU3RyaW5nKSB7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4i
KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogbXkgJWluZGV4ZXJTcGVjaWFsQ2FzZXMgPSAoCiAg
ICAgIlN0b3JhZ2UiID0+IDEsCiAgICAgIkhUTUxBcHBsZXRFbGVtZW50IiA9PiAxLApAQCAtNDcz
LDcgKzQ1Myw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlck5hbWVkQW5kSW5kZXhlZFByb3BlcnR5QWNj
ZXNzb3JzCiAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW5kZXhlZFByb3BlcnR5R2V0
dGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsKIEVORAog
ICAgIH0KLSAgICAgIAorCiAgICAgaWYgKCRpc0luZGV4ZXJTcGVjaWFsQ2FzZSB8fCAkaGFzQ3Vz
dG9tSW5kZXhlZFNldHRlcikgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7
CiAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW5kZXhlZFByb3BlcnR5U2V0dGVyKHVp
bnQzMl90IGluZGV4LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbyk7CkBAIC01MDksNyArNDg5LDcgQEAgRU5ECiBzdWIgR2VuZXJhdGVIZWFk
ZXJDdXN0b21DYWxsCiB7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7Ci0gICAgCisKICAgICBp
ZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ2FsbCJ9KSB7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Y2FsbEFzRnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7XG4iKTsKICAgICB9
CkBAIC05OTksNyArOTc5LDcgQEAgc3ViIEdldEZ1bmN0aW9uVGVtcGxhdGVDYWxsYmFja05hbWUK
IHsKICAgICAkZnVuY3Rpb24gPSBzaGlmdDsKICAgICAkZGF0YU5vZGUgPSBzaGlmdDsKLSAgICAK
KwogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOwogICAgIG15ICRuYW1l
ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAKQEAgLTEwNjcsNyArMTA0Nyw3IEBAIEVO
RAogIiAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiIgLgogIiAgICB9XG4i
KTsKICAgICB9Ci0gICAgCisKICAgICBteSAkcmFpc2VzRXhjZXB0aW9ucyA9IEB7JGZ1bmN0aW9u
LT5yYWlzZXNFeGNlcHRpb25zfTsKICAgICBpZiAoISRyYWlzZXNFeGNlcHRpb25zKSB7CiAgICAg
ICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CkBA
IC0xMTUyLDcgKzExMzIsNyBAQCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpO1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIik7
CiAgICAgfQotICAgIAorCiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgfVxuXG4iKTsK
IH0KIApAQCAtMTQ3NSw2ICsxNDU1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAog
ICAgIHB1c2goQGltcGxGaXhlZEhlYWRlciwKICAgICAgICAgICIjaW5jbHVkZSBcImNvbmZpZy5o
XCJcbiIgLgorICAgICAgICAgIiNpbmNsdWRlIFwiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oXCJc
biIgLgogICAgICAgICAgIiNpbmNsdWRlIFwiVjhQcm94eS5oXCJcbiIgLgogICAgICAgICAgIiNp
bmNsdWRlIFwiVjhCaW5kaW5nLmhcIlxuIiAuCiAgICAgICAgICAiI2luY2x1ZGUgXCJWOEJpbmRp
bmdTdGF0ZS5oXCJcbiIgLgpAQCAtMTU0Myw3ICsxNTI0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICBpZiAoJGhhc0NvbnN0cnVjdG9ycykgewogICAgICAgICBHZW5lcmF0ZUNv
bnN0cnVjdG9yR2V0dGVyKCRpbXBsQ2xhc3NOYW1lLCAkY2xhc3NJbmRleCk7CiAgICAgfQotICAg
CisKICAgICBteSAkaW5kZXhlcjsKICAgICBteSAkbmFtZWRQcm9wZXJ0eUdldHRlcjsKICAgICAj
IEdlbmVyYXRlIG1ldGhvZHMgZm9yIGZ1bmN0aW9ucy4KQEAgLTE2MDQsNyArMTU4NSw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0
ZURhdGEoJGRhdGFOb2RlLCAkYXR0cmlidXRlcyk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAifTtcbiIpOwogICAgIH0KLSAgICAKKwogICAgICMgU2V0dXAgdGFibGUgb2Ygc3RhbmRhcmQg
Y2FsbGJhY2sgZnVuY3Rpb25zCiAgICAgJG51bV9jYWxsYmFja3MgPSAwOwogICAgICRoYXNfY2Fs
bGJhY2tzID0gMDsKQEAgLTE3MDIsNyArMTY4Myw3IEBAIEVORAogICAgICAgICAkcGFyZW50Q2xh
c3NJbmRleCA9IHVjKCRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZSgkcGFyZW50KSk7CiAgICAg
ICAgIGxhc3Q7CiAgICAgfQotICAgIAorCiAgICAgIyBHZW5lcmF0ZSB0aGUgdGVtcGxhdGUgY29u
ZmlndXJhdGlvbiBtZXRob2QKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlJHtjbGFzc05h
bWV9VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MpIHsK
QEAgLTE3MTksNyArMTcwMCw3IEBAIEVORAogICAgICAgTlVMTCwgMCwKIEVORAogICAgIH0KLSAg
ICAKKwogICAgIGlmICgkaGFzX2NhbGxiYWNrcykgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgPDxFTkQpOwogICAgICAgJHtpbnRlcmZhY2VOYW1lfV9jYWxsYmFja3MsIHNpemVvZigke2lu
dGVyZmFjZU5hbWV9X2NhbGxiYWNrcykvc2l6ZW9mKCoke2ludGVyZmFjZU5hbWV9X2NhbGxiYWNr
cykpOwpAQCAtMTczNywyMCArMTcxOCwyMSBAQCBFTkQKICAgICB9CiAKICAgICBpZiAoJGFjY2Vz
c19jaGVjayBvciBAZW5hYmxlZEF0UnVudGltZSBvciBAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSBv
ciAkaGFzX2NvbnN0YW50cykgewotICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKICAgdjg6OkxvY2FsPHY4OjpPYmplY3RU
ZW1wbGF0ZT4gaW5zdGFuY2UgPSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvID0gZGVzYy0+UHJvdG90eXBlVGVtcGxhdGUoKTsK
IEVORAogICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50LCAgIiAgJGFjY2Vzc19jaGVja1xu
Iik7Ci0gICAgCisKICAgICAjIFNldHVwIHRoZSBlbmFibGUtYXQtcnVudGltZSBhdHRycyBpZiB3
ZSBoYXZlIHRoZW0KICAgICBmb3JlYWNoIG15ICRydW50aW1lX2F0dHIgKEBlbmFibGVkQXRSdW50
aW1lKSB7Ci0gICAgICAgICRlbmFibGVfZnVuY3Rpb24gPSAkaW50ZXJmYWNlTmFtZSAuICI6OiIg
LiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkcnVudGltZV9hdHRyLT5zaWduYXR1cmUtPm5h
bWUpOworICAgICAgICAjIEEgZnVuY3Rpb24gbmFtZWQgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
e21ldGhvZE5hbWV9RW5hYmxlZCgpIG5lZWQgdG8gYmUgd3JpdHRlbiBieSBoYW5kLgorICAgICAg
ICAkZW5hYmxlX2Z1bmN0aW9uID0gIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OiIgLiAkY29kZUdl
bmVyYXRvci0+V0tfbGNmaXJzdCgkcnVudGltZV9hdHRyLT5zaWduYXR1cmUtPm5hbWUpIC4gIkVu
YWJsZWQiOwogICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZUNvbmRpdGlv
bmFsU3RyaW5nKCRydW50aW1lX2F0dHItPnNpZ25hdHVyZSk7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFY4JHtlbmFibGVfZnVu
Y3Rpb259RW5hYmxlZCgpKSB7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKSB7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID1cXFxu
Iik7CiAgICAgICAgIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlTmFt
ZSwgJHJ1bnRpbWVfYXR0ciwgIjsiLCAiICAgICIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgPDxFTkQpOwpAQCAtMTc5MCw4ICsxNzcyLDggQEAgRU5ECiAgICAgICAgIG15ICRjb25kaXRp
b25hbCA9ICIiOwogICAgICAgICBpZiAoJGF0dHJFeHQtPnsiRW5hYmxlZEF0UnVudGltZSJ9KSB7
CiAgICAgICAgICAgICAjIE9ubHkgY2FsbCBTZXQoKS9TZXRBY2Nlc3NvcigpIGlmIHRoaXMgbWV0
aG9kIHNob3VsZCBiZSBlbmFibGVkCi0gICAgICAgICAgICAkZW5hYmxlX2Z1bmN0aW9uID0gJGlu
dGVyZmFjZU5hbWUgLiAiOjoiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPm5hbWUpOwotICAgICAgICAgICAgJGNvbmRpdGlvbmFsID0gImlmIChWOCR7
ZW5hYmxlX2Z1bmN0aW9ufUVuYWJsZWQoKSlcbiI7CisgICAgICAgICAgICAkZW5hYmxlX2Z1bmN0
aW9uID0gIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OiIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNm
aXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSkgLiAiRW5hYmxlZCI7CisgICAgICAgICAg
ICAkY29uZGl0aW9uYWwgPSAiaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKVxuIjsKICAgICAgICAg
fQogCiAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHkifSAm
JgpAQCAtMTgzOCwyNCArMTgyMCwyNCBAQCBFTkQKIAogICAgICAgIyBOb3JtYWwgZnVuY3Rpb24g
Y2FsbCBpcyBhIHRlbXBsYXRlCiAgICAgICBteSAkY2FsbGJhY2sgPSBHZXRGdW5jdGlvblRlbXBs
YXRlQ2FsbGJhY2tOYW1lKCRmdW5jdGlvbiwgJGRhdGFOb2RlKTsKLSAgICAgIAorCiAgICAgICBp
ZiAoJHByb3BlcnR5X2F0dHJpYnV0ZXMgZXEgInY4OjpEb250RGVsZXRlIikgewogICAgICAgICAg
ICRwcm9wZXJ0eV9hdHRyaWJ1dGVzID0gIiI7CiAgICAgICB9IGVsc2UgewogICAgICAgICAgICRw
cm9wZXJ0eV9hdHRyaWJ1dGVzID0gIiwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
PigkcHJvcGVydHlfYXR0cmlidXRlcykiOwogICAgICAgfQotICAgICAgCisKICAgICAgIGlmICgk
dGVtcGxhdGUgZXEgInByb3RvIiAmJiAkY29uZGl0aW9uYWwgZXEgIiIgJiYgJHNpZ25hdHVyZSBl
cSAiZGVmYXVsdF9zaWduYXR1cmUiICYmICRwcm9wZXJ0eV9hdHRyaWJ1dGVzIGVxICIiKSB7CiAg
ICAgICAgICAgIyBTdGFuZGFyZCB0eXBlIG9mIGNhbGxiYWNrLCBhbHJlYWR5IGNyZWF0ZWQgaW4g
dGhlIGJhdGNoLCBzbyBza2lwIGl0IGhlcmUuCiAgICAgICAgICAgbmV4dDsKICAgICAgIH0KLSAg
ICAgIAorCiAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogICAke2NvbmRpdGlvbmFs
fSR0ZW1wbGF0ZS0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiJG5hbWUiKSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldygkY2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCAke3NpZ25hdHVy
ZX0pJHByb3BlcnR5X2F0dHJpYnV0ZXMpOwogRU5ECiAgICAgICAkbnVtX2NhbGxiYWNrcysrOwog
ICAgIH0KLSAgICAKKwogICAgIGRpZSAiV3JvbmcgbnVtYmVyIG9mIGNhbGxiYWNrcyBnZW5lcmF0
ZWQgZm9yICRpbnRlcmZhY2VOYW1lICgkbnVtX2NhbGxiYWNrcywgc2hvdWxkIGJlICR0b3RhbF9m
dW5jdGlvbnMpIiBpZiAkbnVtX2NhbGxiYWNrcyAhPSAkdG90YWxfZnVuY3Rpb25zOwogCiAgICAg
aWYgKCRoYXNfY29uc3RhbnRzKSB7CkBAIC0xODYzLDExICsxODQ1LDExIEBAIEVORAogICBiYXRj
aENvbmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywgJHtpbnRlcmZhY2VOYW1lfV9jb25zdHMs
IHNpemVvZigke2ludGVyZmFjZU5hbWV9X2NvbnN0cykvc2l6ZW9mKCoke2ludGVyZmFjZU5hbWV9
X2NvbnN0cykpOwogRU5ECiAgICAgfQotICAgIAorCiAgICAgIyBTcGVjaWFsIGNhc2VzCiAgICAg
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCA8PEVORCk7Ci0gCisKICAgcHJvdG8tPlNldEludGVybmFsRmllbGRDb3VudChWOERP
TVdpbmRvdzo6aW50ZXJuYWxGaWVsZENvdW50KTsKICAgZGVzYy0+U2V0SGlkZGVuUHJvdG90eXBl
KHRydWUpOwogICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4RE9NV2luZG93Ojpp
bnRlcm5hbEZpZWxkQ291bnQpOwpAQCAtMTg3OSw4ICsxODYxLDggQEAgRU5ECiAgICAgfQogICAg
IGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTG9jYXRpb24iKSB7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCA8PEVORCk7Ci0gCi0gIC8vIEZvciBzZWN1cml0eSByZWFzb25zLCB0aGVzZSBmdW5j
dGlvbnMgYXJlIG9uIHRoZSBpbnN0YW5jZSBpbnN0ZWFkIAorCisgIC8vIEZvciBzZWN1cml0eSBy
ZWFzb25zLCB0aGVzZSBmdW5jdGlvbnMgYXJlIG9uIHRoZSBpbnN0YW5jZSBpbnN0ZWFkCiAgIC8v
IG9mIG9uIHRoZSBwcm90b3R5cGUgb2JqZWN0IHRvIGluc3VyZSB0aGF0IHRoZXkgY2Fubm90IGJl
IG92ZXJ3cml0dGVuLgogICBpbnN0YW5jZS0+U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3KCJy
ZWxvYWQiKSwgVjhMb2NhdGlvbjo6cmVsb2FkQWNjZXNzb3JHZXR0ZXIsIDAsIHY4OjpIYW5kbGU8
djg6OlZhbHVlPigpLCB2ODo6QUxMX0NBTl9SRUFELCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlIHwgdjg6OlJlYWRPbmx5KSk7CiAgIGluc3RhbmNlLT5T
ZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoInJlcGxhY2UiKSwgVjhMb2NhdGlvbjo6cmVwbGFj
ZUFjY2Vzc29yR2V0dGVyLCAwLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OkFMTF9DQU5f
UkVBRCwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6RG9udERlbGV0ZSB8
IHY4OjpSZWFkT25seSkpOwpAQCAtMTg5Myw3ICsxODc1LDcgQEAgRU5ECiAgICAgICAgICRuYXRp
dmVUeXBlID0gIlY4U1ZHUE9EVHlwZVdyYXBwZXI8JHtuYXRpdmVUeXBlfT4iOwogICAgIH0KICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAKKwogICAvLyBDdXN0b20gdG9TdHJpbmcg
dGVtcGxhdGUKICAgZGVzYy0+U2V0KGdldFRvU3RyaW5nTmFtZSgpLCBnZXRUb1N0cmluZ1RlbXBs
YXRlKCkpOwogICByZXR1cm4gZGVzYzsKQEAgLTE5MTAsNyArMTg5Miw3IEBAIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX06OkdldFRlbXBsYXRlKCkgewog
fQogCiAke25hdGl2ZVR5cGV9KiAke2NsYXNzTmFtZX06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gb2JqZWN0KSB7Ci0gIHJldHVybiByZWludGVycHJldF9jYXN0PCR7bmF0aXZlVHlw
ZX0qPihvYmplY3QtPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmpl
Y3RJbmRleCkpOyAKKyAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8JHtuYXRpdmVUeXBlfSo+KG9i
amVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4
KSk7CiB9CiAKIGJvb2wgJHtjbGFzc05hbWV9OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUpIHsKQEAgLTE5MzEsNyArMTkxMyw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3RUZW1wbGF0ZT4gVjhET01XaW5kb3c6OkdldFNoYWRvd09iamVjdFRlbXBsYXRlKCkgewog
fQogRU5ECiAgICAgfQotICAgIAorCiAgICAgR2VuZXJhdGVUb1Y4Q29udmVydGVycygkZGF0YU5v
ZGUsICRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkbmF0aXZlVHlwZSk7CiAKICAgICBwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOwpAQCAtMTk0MSwxOSArMTkyMywxOSBAQCBFTkQKICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7CiB9CiAKLXN1YiBHZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzIAor
c3ViIEdlbmVyYXRlVG9WOENvbnZlcnRlcnMKIHsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsK
ICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogICAgIG15ICRjbGFzc05hbWUgPSBzaGlm
dDsKICAgICBteSAkbmF0aXZlVHlwZSA9IHNoaWZ0OwotICAgIAorCiAgICAgbXkgJHdyYXBwZXJU
eXBlID0gIlY4Q2xhc3NJbmRleDo6IiAuIHVjKCRpbnRlcmZhY2VOYW1lKTsKICAgICBteSAkZG9t
TWFwRnVuY3Rpb24gPSBHZXREb21NYXBGdW5jdGlvbigkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1l
KTsKICAgICBteSAkZm9yY2VOZXdPYmplY3RJbnB1dCA9IElzRE9NTm9kZVR5cGUoJGludGVyZmFj
ZU5hbWUpID8gIiwgYm9vbCBmb3JjZU5ld09iamVjdCIgOiAiIjsKICAgICBteSAkZm9yY2VOZXdP
YmplY3RDYWxsID0gSXNET01Ob2RlVHlwZSgkaW50ZXJmYWNlTmFtZSkgPyAiLCBmb3JjZU5ld09i
amVjdCIgOiAiIjsKLSAgICAKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOyAgIAorCisg
ICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiAk
e2NsYXNzTmFtZX06OndyYXAoJHtuYXRpdmVUeXBlfSogaW1wbCR7Zm9yY2VOZXdPYmplY3RJbnB1
dH0pIHsKICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyOwpAQCAtMjAxOSw3ICsyMDAx
LDcgQEAgRU5ECiAgICAgY29udGV4dC0+RXhpdCgpOwogRU5ECiAgICAgfQotICAgIAorCiAgICAg
cHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAg
IHJldHVybiB3cmFwcGVyOwpAQCAtMjA0NSw3ICsyMDI3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjgoUGFzc1JlZlB0cjwke25hdGl2ZVR5cGV9ID4gaW1wbCR7Zm9yY2VOZXdPYmplY3RJ
bnB1dH0KIH0KIEVORAogICAgIH0KLSAgICAKKwogICAgIGlmICghSGFzQ3VzdG9tVG9WOEltcGxl
bWVudGF0aW9uKCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpKSB7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CiAKQEAgLTIwNzUsNyArMjA1Nyw3IEBAIHN1YiBIYXNDdXN0b21U
b1Y4SW1wbGVtZW50YXRpb24gewogICAgICMgRklYTUU6IFRoaXMgc3Vicm91dGluZSBpcyBsYW1l
LiBQcm9iYWJseSBzaG91bGQgYmUgYW4gLmlkbCBhdHRyaWJ1dGUgKEN1c3RvbVRvVjgpPwogICAg
ICRkYXRhTm9kZSA9IHNoaWZ0OwogICAgICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7Ci0gICAgCisK
ICAgICAjIFdlIGdlbmVyYXRlIGEgY3VzdG9tIGNvbnZlcnRlciAoYnV0IEpTQyBkb2Vzbid0KSBm
b3IgdGhlIGZvbGxvd2luZzoKICAgICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiQmFy
SW5mbyI7CiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZU5hbWUgZXEgIkNTU1N0eWxlU2hlZXQi
OwpAQCAtMjA5Miw3ICsyMDc0LDcgQEAgc3ViIEhhc0N1c3RvbVRvVjhJbXBsZW1lbnRhdGlvbiB7
CiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZU5hbWUgZXEgIlNWR0RvY3VtZW50IjsKICAgICBy
ZXR1cm4gMSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiU1ZHRWxlbWVudCI7CiAgICAgcmV0dXJuIDEg
aWYgJGludGVyZmFjZU5hbWUgZXEgIlNjcmVlbiI7Ci0gICAgCisKICAgICAjIFdlIGRvbid0IGdl
bmVyYXRlIGEgY3VzdG9tIGNvbnZlcnRlciAoYnV0IEpTQyBkb2VzKSBmb3IgdGhlIGZvbGxvd2lu
ZzoKICAgICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiQWJzdHJhY3RXb3JrZXIiOwog
ICAgIHJldHVybiAwIGlmICRpbnRlcmZhY2VOYW1lIGVxICJDYW52YXNSZW5kZXJpbmdDb250ZXh0
IjsKQEAgLTIzMjEsNyArMjMwMyw3IEBAIHN1YiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZQog
ICAgIH0KIAogICAgICR0eXBlID0gR2V0TmF0aXZlVHlwZSgkdHlwZSwgJHBhcmFtZXRlckluZGV4
ID49IDAgPyAxIDogMCk7Ci0gICAgCisKICAgICBpZiAoJHBhcmFtZXRlckluZGV4ID49IDAgJiYg
JHR5cGUgZXEgIlY4UGFyYW1ldGVyIikgewogICAgICAgICBteSAkbW9kZSA9ICIiOwogICAgICAg
ICBpZiAoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnZlcnRVbmRlZmluZWRP
ck51bGxUb051bGxTdHJpbmcifSkgewpAQCAtMjMzMSw3ICsyMzEzLDcgQEAgc3ViIEdldE5hdGl2
ZVR5cGVGcm9tU2lnbmF0dXJlCiAgICAgICAgIH0KICAgICAgICAgJHR5cGUgLj0gIjwkbW9kZT4i
OwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiAkdHlwZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGE0ODA0ODAuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNMb2Nh
bFN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNT
ZXNzaW9uU3RvcmFnZUVuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojppc05vdGlmaWNhdGlvbnNFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQgPSBmYWxzZTsKLWJvb2wgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6aXNHZW9sb2NhdGlvbkVuYWJsZWQgPSBmYWxzZTsKLWJvb2wgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6aXNJbmRleGVkRGF0YWJhc2VFbmFibGVkID0gZmFsc2U7Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MjgwMDQuLjAwMDAw
MDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
X2gKLSNkZWZpbmUgUnVudGltZUVuYWJsZWRGZWF0dXJlc19oCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotLy8gQSBjbGFzcyB0aGF0IHN0b3JlcyBzdGF0aWMgZW5hYmxlcnMgZm9yIGFsbCBleHBl
cmltZW50YWwgZmVhdHVyZXMKLWNsYXNzIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgewotcHVibGlj
OgotICAgIHN0YXRpYyB2b2lkIHNldExvY2FsU3RvcmFnZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgaXNMb2NhbFN0b3JhZ2VFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wg
bG9jYWxTdG9yYWdlRW5hYmxlZCgpIHsgcmV0dXJuIGlzTG9jYWxTdG9yYWdlRW5hYmxlZDsgfQot
Ci0gICAgc3RhdGljIHZvaWQgc2V0U2Vzc2lvblN0b3JhZ2VFbmFibGVkKGJvb2wgaXNFbmFibGVk
KSB7IGlzU2Vzc2lvblN0b3JhZ2VFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJv
b2wgc2Vzc2lvblN0b3JhZ2VFbmFibGVkKCkgeyByZXR1cm4gaXNTZXNzaW9uU3RvcmFnZUVuYWJs
ZWQ7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGJvb2wgaXNF
bmFibGVkKSB7IGlzTm90aWZpY2F0aW9uc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0
aWMgYm9vbCBub3RpZmljYXRpb25zRW5hYmxlZCgpIHsgcmV0dXJuIGlzTm90aWZpY2F0aW9uc0Vu
YWJsZWQ7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKGJv
b2wgaXNFbmFibGVkKSB7IGlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
LSAgICBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpIHsgcmV0dXJuIGlzQXBw
bGljYXRpb25DYWNoZUVuYWJsZWQ7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldEdlb2xvY2F0aW9u
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0dlb2xvY2F0aW9uRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQotICAgIHN0YXRpYyBib29sIGdlb2xvY2F0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGlzR2Vv
bG9jYXRpb25FbmFibGVkOyB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRJbmRleGVkRGF0YWJhc2VF
bmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzSW5kZXhlZERhdGFiYXNlRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQotICAgIHN0YXRpYyBib29sIGluZGV4ZWREYXRhYmFzZUVuYWJsZWQoKSB7IHJldHVy
biBpc0luZGV4ZWREYXRhYmFzZUVuYWJsZWQ7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBOZXZlciBp
bnN0YW50aWF0ZS4KLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkgeyB9Ci0KLSAgICBzdGF0
aWMgYm9vbCBpc0xvY2FsU3RvcmFnZUVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNTZXNzaW9u
U3RvcmFnZUVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNOb3RpZmljYXRpb25zRW5hYmxlZDsK
LSAgICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOwotICAgIHN0YXRpYyBi
b29sIGlzR2VvbG9jYXRpb25FbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzSW5kZXhlZERhdGFi
YXNlRW5hYmxlZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXNfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGJhNmM3MzguLjU2MmIyNWUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTEsMTAg
KzEsMTAgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICog
bWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE0LDcg
KzE0LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U2NyZWVuLmgiCi0jaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IlNjaGVkdWxlZEFjdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNs
dWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKQEAgLTk2LDkgKzk1LDkgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFdpbmRvd1NldFRpbWVvdXRJbXBsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MsIGJvb2wgc2luZ2wKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdjhTdHJpbmcgPSBmdW5jdGlvbi0+VG9TdHJpbmcoKTsKIAotICAgICAgICAgICAg
Ly8gQmFpbCBvdXQgaWYgc3RyaW5nIGNvbnZlcnNpb24gZmFpbGVkLiAKLSAgICAgICAgICAgIGlm
ICh2OFN0cmluZy5Jc0VtcHR5KCkpIAotICAgICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7IAorICAgICAgICAgICAgLy8gQmFpbCBvdXQgaWYgc3RyaW5nIGNvbnZlcnNpb24gZmFp
bGVkLgorICAgICAgICAgICAgaWYgKHY4U3RyaW5nLklzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCiAgICAgICAgICAgICBmdW5jdGlvblN0cmluZyA9
IHRvV2ViQ29yZVN0cmluZyh2OFN0cmluZyk7CiAgICAgICAgIH0KQEAgLTIyOSw3ICsyMjgsNyBA
QCB2b2lkIFY4RE9NV2luZG93OjpvcGVuZXJBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OgogCiAgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6
Y2FuQWNjZXNzRnJhbWUoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT5mcmFtZSgpLCB0cnVl
KSkKICAgICAgICAgcmV0dXJuOwotICAKKwogICAgIC8vIE9wZW5lciBjYW4gYmUgc2hhZG93ZWQg
aWYgaXQgaXMgaW4gdGhlIHNhbWUgZG9tYWluLgogICAgIC8vIEhhdmUgYSBzcGVjaWFsIGhhbmRs
aW5nIG9mIG51bGwgdmFsdWUgdG8gYmVoYXZlCiAgICAgLy8gbGlrZSBGaXJlZm94LiBTZWUgYnVn
IGh0dHA6Ly9iLzEyMjQ4ODcgJiBodHRwOi8vYi83OTE3MDYuCkBAIC0yNTUsODUgKzI1NCw2IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6QXVkaW9BY2Nlc3NvckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Z2V0Q29u
c3RydWN0b3IoVjhDbGFzc0luZGV4OjpBVURJTywgd2luZG93KTsKIH0KIAotYm9vbCBWOERPTVdp
bmRvdzo6QXVkaW9FbmFibGVkKCkKLXsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxh
YmxlKCk7Ci19Ci0KLWJvb2wgVjhET01XaW5kb3c6OkhUTUxNZWRpYUVsZW1lbnRFbmFibGVkKCkK
LXsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Ci19Ci0KLWJvb2wgVjhE
T01XaW5kb3c6OkhUTUxBdWRpb0VsZW1lbnRFbmFibGVkKCkKLXsKLSAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OmlzQXZhaWxhYmxlKCk7Ci19Ci0KLWJvb2wgVjhET01XaW5kb3c6OkhUTUxWaWRlb0Vs
ZW1lbnRFbmFibGVkKCkKLXsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7
Ci19Ci0KLWJvb2wgVjhET01XaW5kb3c6Ok1lZGlhRXJyb3JFbmFibGVkKCkKLXsKLSAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQotYm9vbCBWOERPTVdpbmRvdzo6U2hhcmVkV29ya2VyRW5hYmxlZCgp
Ci17Ci0gICAgcmV0dXJuIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmlzQXZhaWxhYmxlKCk7Ci19
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLWJvb2wgVjhET01XaW5kb3c6Oldl
YlNvY2tldEVuYWJsZWQoKQotewotICAgIHJldHVybiBXZWJTb2NrZXQ6OmlzQXZhaWxhYmxlKCk7
Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShEQVRBQkFTRSkKLWJvb2wgVjhET01XaW5kb3c6Ok9w
ZW5EYXRhYmFzZUVuYWJsZWQoKQotewotICAgIHJldHVybiBEYXRhYmFzZTo6aXNBdmFpbGFibGUo
KTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi1ib29sIFY4RE9N
V2luZG93OjpJbmRleGVkREJFbmFibGVkKCkKLXsKLSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6aW5kZXhlZERhdGFiYXNlRW5hYmxlZCgpOwotfQotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoRE9NX1NUT1JBR0UpCi1ib29sIFY4RE9NV2luZG93OjpMb2NhbFN0b3JhZ2VFbmFibGVkKCkK
LXsKLSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bG9jYWxTdG9yYWdlRW5hYmxl
ZCgpOwotfQotCi1ib29sIFY4RE9NV2luZG93OjpTZXNzaW9uU3RvcmFnZUVuYWJsZWQoKQotewot
ICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXNzaW9uU3RvcmFnZUVuYWJsZWQo
KTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi1ib29sIFY4RE9NV2lu
ZG93OjpXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6Om5vdGlmaWNhdGlvbnNFbmFibGVkKCk7Ci19Ci0jZW5kaWYKLQotI2lm
IEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi1ib29sIFY4RE9NV2luZG93OjpBcHBs
aWNhdGlvbkNhY2hlRW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7Ci19CiAjZW5kaWYKIAogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RE9NV2luZG93OjpJbWFnZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtNTk2LDcgKzUx
Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9n
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICAvLyBkZWZhdWx0IGhlcmUgY2FtZSBm
cm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFLgogICAgIHdpbmRvd0ZlYXR1cmVzLmhl
aWdodCA9IFdpbmRvd0ZlYXR1cmVzOjpmbG9hdEZlYXR1cmUoZmVhdHVyZXMsICJkaWFsb2doZWln
aHQiLCAxMDAsIHNjcmVlblJlY3QuaGVpZ2h0KCksIDQ1MCk7CiAgICAgd2luZG93RmVhdHVyZXMu
aGVpZ2h0U2V0ID0gdHJ1ZTsKLSAgCisKICAgICB3aW5kb3dGZWF0dXJlcy54ID0gV2luZG93RmVh
dHVyZXM6OmZsb2F0RmVhdHVyZShmZWF0dXJlcywgImRpYWxvZ2xlZnQiLCBzY3JlZW5SZWN0Lngo
KSwgc2NyZWVuUmVjdC5yaWdodCgpIC0gd2luZG93RmVhdHVyZXMud2lkdGgsIC0xKTsKICAgICB3
aW5kb3dGZWF0dXJlcy54U2V0ID0gd2luZG93RmVhdHVyZXMueCA+IDA7CiAgICAgd2luZG93RmVh
dHVyZXMueSA9IFdpbmRvd0ZlYXR1cmVzOjpmbG9hdEZlYXR1cmUoZmVhdHVyZXMsICJkaWFsb2d0
b3AiLCBzY3JlZW5SZWN0LnkoKSwgc2NyZWVuUmVjdC5ib3R0b20oKSAtIHdpbmRvd0ZlYXR1cmVz
LmhlaWdodCwgLTEpOwpAQCAtNjk1LDExICs2MTUsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4RE9NV2luZG93OjpvcGVuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAg
ICBpZiAodG9wT3JQYXJlbnQpIHsKICAgICAgICAgaWYgKCFzaG91bGRBbGxvd05hdmlnYXRpb24o
ZnJhbWUpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgICAKKwogICAg
ICAgICBTdHJpbmcgY29tcGxldGVkVXJsOwogICAgICAgICBpZiAoIXVybFN0cmluZy5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBjb21wbGV0ZWRVcmwgPSBjb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwot
ICAgIAorCiAgICAgICAgIGlmICghY29tcGxldGVkVXJsLmlzRW1wdHkoKSAmJgogICAgICAgICAg
ICAgKCFwcm90b2NvbElzSmF2YVNjcmlwdChjb21wbGV0ZWRVcmwpIHx8IFNjcmlwdENvbnRyb2xs
ZXI6OmlzU2FmZVNjcmlwdChmcmFtZSkpKSB7CiAgICAgICAgICAgICBib29sIHVzZXJHZXN0dXJl
ID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAKaW5kZXggNzU5MjJlNy4uNDJlMTcxOCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20uY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9yQ3VzdG9tLmNwcApAQCAt
MSwxMCArMSwxMCBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogCisgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAt
MTQsNyArMTQsNyBAQAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0zNywxMyArMzcsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi1ib29sIFY4
TmF2aWdhdG9yOjpHZW9sb2NhdGlvbkVuYWJsZWQoKQotewotICAgIHJldHVybiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpnZW9sb2NhdGlvbkVuYWJsZWQoKTsKLX0KLSNlbmRpZgotCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChOYXZpZ2F0b3IqIGltcGwpCiB7CiAgICAgaWYgKCFpbXBsKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAKaW5kZXggOWQ1NGY4ZS4uYWIxNGU4YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC0zNSw3ICszNSw2IEBA
CiAKICNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNp
bmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0
aW9uLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5n
LmgiCkBAIC00OCwyMCArNDcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKLWJvb2wgVjhXb3JrZXJDb250ZXh0OjpXZWJraXROb3RpZmljYXRp
b25zRW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om5vdGlm
aWNhdGlvbnNFbmFibGVkKCk7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
LWJvb2wgVjhXb3JrZXJDb250ZXh0OjpXZWJTb2NrZXRFbmFibGVkKCkKLXsKLSAgICByZXR1cm4g
V2ViU29ja2V0Ojppc0F2YWlsYWJsZSgpOwotfQotI2VuZGlmCi0KIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBTZXRUaW1lb3V0T3JJbnRlcnZhbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29s
IHNpbmdsZVNob3QpCiB7CiAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4V29y
a2VyQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHAKaW5kZXggMGVmOGI5Yi4uYWQ4NDc2NCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcApAQCAtMTIzLDE0ICsxMjMsMTQg
QEAgYm9vbCBXZWJSdW50aW1lRmVhdHVyZXM6OmlzU29ja2V0c0VuYWJsZWQoKQogdm9pZCBXZWJS
dW50aW1lRmVhdHVyZXM6OmVuYWJsZU5vdGlmaWNhdGlvbnMoYm9vbCBlbmFibGUpCiB7CiAjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Tm90
aWZpY2F0aW9uc0VuYWJsZWQoZW5hYmxlKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXRXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZChlbmFibGUpOwogI2VuZGlmCiB9CiAKIGJvb2wg
V2ViUnVudGltZUZlYXR1cmVzOjppc05vdGlmaWNhdGlvbnNFbmFibGVkKCkKIHsKICNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKLSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bm90
aWZpY2F0aW9uc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQoKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwog
I2VuZGlmCkBAIC0xNzEsMTQgKzE3MSwxNCBAQCBib29sIFdlYlJ1bnRpbWVGZWF0dXJlczo6aXNH
ZW9sb2NhdGlvbkVuYWJsZWQoKQogdm9pZCBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZUluZGV4
ZWREYXRhYmFzZShib29sIGVuYWJsZSkKIHsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
LSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRJbmRleGVkRGF0YWJhc2VFbmFibGVkKGVu
YWJsZSk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0SW5kZXhlZERCRW5hYmxlZChl
bmFibGUpOwogI2VuZGlmCiB9CiAKIGJvb2wgV2ViUnVudGltZUZlYXR1cmVzOjppc0luZGV4ZWRE
YXRhYmFzZUVuYWJsZWQoKQogewogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIHJl
dHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbmRleGVkRGF0YWJhc2VFbmFibGVkKCk7Cisg
ICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmluZGV4ZWREQkVuYWJsZWQoKTsKICNl
bHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48365</attachid>
            <date>2010-02-08 13:53:45 -0800</date>
            <delta_ts>2010-02-10 02:36:47 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-34667-20100208135344.patch</filename>
            <type>text/plain</type>
            <size>41512</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2Y4MzcxZS4uOWZmMGRhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wMi0wNSAgWWFhciBTY2huaXRt
YW4gIDx5YWFyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTaW1wbGlmaWVkIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYW5kIGNv
cnJlc3BvbmRpbmcgdjggZ2VuZXJhdGVkIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NjY3CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphdWRpb0VuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbE1lZGlh
RWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6aHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6aHRtbFZpZGVvRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFFcnJvckVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkV29ya2VyRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJTb2NrZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFz
ZUVuYWJsZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNldExvY2FsU3RvcmFnZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6bG9jYWxTdG9yYWdlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTZXNzaW9uU3RvcmFnZUVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2Vzc2lvblN0b3JhZ2VFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdE5vdGlm
aWNhdGlvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OndlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldEFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmFwcGxpY2F0aW9uQ2FjaGVFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEdlb2xvY2F0
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpn
ZW9sb2NhdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0SW5kZXhlZERCRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjppbmRleGVkREJFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhO
YXZpZ2F0b3JDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtl
ckNvbnRleHRDdXN0b20uY3BwOgorCiAyMDEwLTAyLTA1ICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVt
aUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCA3Y2ZkODlmLi44NzVlNDI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDU0LDYgKzQ1NCw4IEBACiAgICAgICAgICAgICAn
YmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nU2VjdXJpdHlCYXNlLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nU2VjdXJpdHlCYXNlLmgnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2dlbmVyaWMvR2VuZXJpY0JpbmRpbmcuaCcsCisgICAgICAgICAgICAnYmluZGluZ3Mv
Z2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCcsCisgICAgICAgICAgICAnYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0RPTU9iamVjdFdpdGhTVkdDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0dDQ29udHJvbGxlci5jcHAnLApAQCAtNzg1LDggKzc4Nyw2IEBACiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L05Q
VjhPYmplY3QuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvT3duSGFuZGxlLmgnLAotICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwJywKLSAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY29w
ZWRET01EYXRhU3RvcmUuY3BwJywKQEAgLTM4MjAsNyArMzgyMCw3IEBACiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZW5hYmxlU29saWRCdXR0b25HbHlwaC5wbmcnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2Vycm9ySWNvbi5wbmcnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2Vycm9yTWVkaXVtSWNvbi5w
bmcnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2Vycm9yUmVkRG90
LnBuZycsICAgICAgICAgICAgCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFn
ZXMvZXJyb3JSZWREb3QucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0lt
YWdlcy9leGNsdWRlQnV0dG9uR2x5cGgucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0ltYWdlcy9mb2N1c0J1dHRvbkdseXBoLnBuZycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9JbWFnZXMvZm9yd2FyZC5wbmcnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjNmZGJiNmQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKQEAgLTAsMCArMSw5OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgi
CisKKyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5j
bHVkZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgorI2luY2x1ZGUgIldlYlNvY2tldC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNM
b2NhbFN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
aXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQgPSB0cnVlOworYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc1dlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkID0gZmFsc2U7Citib29sIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQgPSBmYWxzZTsKK2Jvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNHZW9sb2NhdGlvbkVuYWJsZWQgPSBmYWxzZTsKK2Jv
b2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNJbmRleGVkREJFbmFibGVkID0gZmFsc2U7CisK
KyNpZiBFTkFCTEUoVklERU8pCisKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6YXVkaW9F
bmFibGVkKCkKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Cit9CisK
K2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbE1lZGlhRWxlbWVudEVuYWJsZWQoKQor
eworICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKK30KKworYm9vbCBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpCit7CisgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOworfQorCitib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6Omh0bWxWaWRlb0VsZW1lbnRFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OmlzQXZhaWxhYmxlKCk7Cit9CisKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
bWVkaWFFcnJvckVuYWJsZWQoKQoreworICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFi
bGUoKTsKK30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCitib29sIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFdvcmtlckVuYWJsZWQoKQoreworICAgIHJldHVy
biBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojppc0F2YWlsYWJsZSgpOworfQorI2VuZGlmCisKKyNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYlNv
Y2tldEVuYWJsZWQoKQoreworICAgIHJldHVybiBXZWJTb2NrZXQ6OmlzQXZhaWxhYmxlKCk7Cit9
CisjZW5kaWYKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6b3BlbkRhdGFiYXNlRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIERhdGFiYXNlOjppc0F2
YWlsYWJsZSgpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMGY3OGYKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0wLDAg
KzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXNfaAorI2RlZmluZSBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBIGNsYXNzIHRo
YXQgc3RvcmVzIHN0YXRpYyBlbmFibGVycyBmb3IgYWxsIGV4cGVyaW1lbnRhbCBmZWF0dXJlcy4g
Tm90ZSB0aGF0CisvLyB0aGUgbWV0aG9kIG5hbWVzIG11c3QgbGluZSB1cCB3aXRoIHRoZSBKYXZh
U2NyaXB0IG1ldGhvZCB0aGV5IGVuYWJsZSBmb3IgY29kZQorLy8gZ2VuZXJhdGlvbiB0byB3b3Jr
IHByb3Blcmx5LgorCitjbGFzcyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgdm9pZCBzZXRMb2NhbFN0b3JhZ2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlz
TG9jYWxTdG9yYWdlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIGxvY2Fs
U3RvcmFnZUVuYWJsZWQoKSB7IHJldHVybiBpc0xvY2FsU3RvcmFnZUVuYWJsZWQ7IH0KKworICAg
IHN0YXRpYyB2b2lkIHNldFNlc3Npb25TdG9yYWdlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBp
c1Nlc3Npb25TdG9yYWdlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIHNl
c3Npb25TdG9yYWdlRW5hYmxlZCgpIHsgcmV0dXJuIGlzU2Vzc2lvblN0b3JhZ2VFbmFibGVkOyB9
CisKKyAgICBzdGF0aWMgdm9pZCBzZXRXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZChib29sIGlz
RW5hYmxlZCkgeyBpc1dlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkID0gaXNFbmFibGVkOyB9Cisg
ICAgc3RhdGljIGJvb2wgd2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQoKSB7IHJldHVybiBpc1dl
YmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkOyB9CisKKyAgICBzdGF0aWMgdm9pZCBzZXRBcHBsaWNh
dGlvbkNhY2hlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkID0gaXNFbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgYXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQoKSB7IHJldHVybiBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOyB9CisKKyAgICBzdGF0aWMg
dm9pZCBzZXRHZW9sb2NhdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNHZW9sb2NhdGlv
bkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBzdGF0aWMgYm9vbCBnZW9sb2NhdGlvbkVuYWJs
ZWQoKSB7IHJldHVybiBpc0dlb2xvY2F0aW9uRW5hYmxlZDsgfQorCisgICAgc3RhdGljIHZvaWQg
c2V0SW5kZXhlZERCRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0luZGV4ZWREQkVuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KKyAgICBzdGF0aWMgYm9vbCBpbmRleGVkREJFbmFibGVkKCkgeyByZXR1
cm4gaXNJbmRleGVkREJFbmFibGVkOyB9CisKKyNpZiBFTkFCTEUoVklERU8pCisgICAgc3RhdGlj
IGJvb2wgYXVkaW9FbmFibGVkKCk7CisgICAgc3RhdGljIGJvb2wgaHRtbE1lZGlhRWxlbWVudEVu
YWJsZWQoKTsKKyAgICBzdGF0aWMgYm9vbCBodG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpOworICAg
IHN0YXRpYyBib29sIGh0bWxWaWRlb0VsZW1lbnRFbmFibGVkKCk7CisgICAgc3RhdGljIGJvb2wg
bWVkaWFFcnJvckVuYWJsZWQoKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJT
KQorICAgIHN0YXRpYyBib29sIHNoYXJlZFdvcmtlckVuYWJsZWQoKTsKKyNlbmRpZgorCisjaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIHN0YXRpYyBib29sIHdlYlNvY2tldEVuYWJsZWQoKTsK
KyNlbmRpZgorCisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAgIHN0YXRpYyBib29sIG9wZW5EYXRh
YmFzZUVuYWJsZWQoKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIC8vIE5ldmVyIGluc3RhbnRp
YXRlLgorICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKSB7IH0KKworICAgIHN0YXRpYyBib29s
IGlzTG9jYWxTdG9yYWdlRW5hYmxlZDsKKyAgICBzdGF0aWMgYm9vbCBpc1Nlc3Npb25TdG9yYWdl
RW5hYmxlZDsKKyAgICBzdGF0aWMgYm9vbCBpc1dlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkOwor
ICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQ7CisgICAgc3RhdGljIGJv
b2wgaXNHZW9sb2NhdGlvbkVuYWJsZWQ7CisgICAgc3RhdGljIGJvb2wgaXNJbmRleGVkREJFbmFi
bGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUnVudGltZUVu
YWJsZWRGZWF0dXJlc19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvci5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CmluZGV4IGRjM2M3YzAuLjUwNmU4ZWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtCkBAIC0xLDI2ICsxLDI2IEBACiAjCiAjIFdlYktpdCBJREwgcGFyc2VyCi0j
IAorIwogIyBDb3B5cmlnaHQgKEMpIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtk
ZS5vcmc+CiAjIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KICMgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IENhbWVyb24gTWNDb3JtYWNrIDxjYW1AbWNjLmlk
LmF1PgotIyAKKyMKICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwogIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICMgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIyAKKyMKICMgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCiAjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCiAjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAjIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotIyAKKyMKICMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogIyBhaW50IHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCiAjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCiAjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotIyAKKyMK
IAogcGFja2FnZSBDb2RlR2VuZXJhdG9yOwogCkBAIC0zOSwxMCArMzksMTAgQEAgbXkgJGNvZGVH
ZW5lcmF0b3IgPSAwOwogCiBteSAkdmVyYm9zZSA9IDA7CiAKLW15ICVwcmltaXRpdmVUeXBlSGFz
aCA9ICgiaW50IiA9PiAxLCAic2hvcnQiID0+IDEsICJsb25nIiA9PiAxLCAibG9uZyBsb25nIiA9
PiAxLCAKK215ICVwcmltaXRpdmVUeXBlSGFzaCA9ICgiaW50IiA9PiAxLCAic2hvcnQiID0+IDEs
ICJsb25nIiA9PiAxLCAibG9uZyBsb25nIiA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICJ1bnNpZ25lZCBpbnQiID0+IDEsICJ1bnNpZ25lZCBzaG9ydCIgPT4gMSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyIgPT4gMSwgInVuc2lnbmVkIGxvbmcgbG9uZyIg
PT4gMSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0IiA9PiAxLCAiZG91YmxlIiA9
PiAxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyIgPT4gMSwgInVu
c2lnbmVkIGxvbmcgbG9uZyIgPT4gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQi
ID0+IDEsICJkb3VibGUiID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImJvb2xlYW4i
ID0+IDEsICJ2b2lkIiA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICJEYXRlIiA9PiAx
KTsKIApAQCAtMzI4LDEwICszMjgsMTAgQEAgc3ViIElzU1ZHQW5pbWF0ZWRUeXBlCiAgICAgbXkg
JHR5cGUgPSBzaGlmdDsKIAogICAgIHJldHVybiAxIGlmICRzdmdBbmltYXRlZFR5cGVIYXNoeyR0
eXBlfTsKLSAgICByZXR1cm4gMDsgCisgICAgcmV0dXJuIDA7CiB9CiAKLSMgVXBwZXJjYXNlIHRo
ZSBmaXJzdCBsZXR0ZXIgd2hpbGUgcmVzcGVjdGluZyBXZWJLaXQgc3R5bGUgZ3VpZGVsaW5lcy4g
CisjIFVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0dGVyIHdoaWxlIHJlc3BlY3RpbmcgV2ViS2l0IHN0
eWxlIGd1aWRlbGluZXMuCiAjIEUuZy4sIHhtbEVuY29kaW5nIGJlY29tZXMgWE1MRW5jb2Rpbmcs
IGJ1dCB4bWxsbGFuZyBiZWNvbWVzIFhtbGxhbmcuCiBzdWIgV0tfdWNmaXJzdAogewpAQCAtMzQx
LDEyICszNDEsMTMgQEAgc3ViIFdLX3VjZmlyc3QKICAgICByZXR1cm4gJHJldDsKIH0KIAotIyBM
b3dlcmNhc2UgdGhlIGZpcnN0IGxldHRlciB3aGlsZSByZXNwZWN0aW5nIFdlYktpdCBzdHlsZSBn
dWlkZWxpbmVzLiAKKyMgTG93ZXJjYXNlIHRoZSBmaXJzdCBsZXR0ZXIgd2hpbGUgcmVzcGVjdGlu
ZyBXZWJLaXQgc3R5bGUgZ3VpZGVsaW5lcy4KICMgVVJMIGJlY29tZXMgdXJsLCBidXQgU2V0VVJM
IGJlY29tZXMgc2V0VVJMLgogc3ViIFdLX2xjZmlyc3QKIHsKICAgICBteSAoJG9iamVjdCwgJHBh
cmFtKSA9IEBfOwogICAgIG15ICRyZXQgPSBsY2ZpcnN0KCRwYXJhbSk7CisgICAgJHJldCA9fiBz
L2hUTUwvaHRtbC8gaWYgJHJldCA9fiAvXmhUTUwvOwogICAgICRyZXQgPX4gcy91UkwvdXJsLyBp
ZiAkcmV0ID1+IC9edVJMLzsKICAgICAkcmV0ID1+IHMvalMvanMvIGlmICRyZXQgPX4gL15qUy87
CiAgICAgJHJldCA9fiBzL3hNTC94bWwvIGlmICRyZXQgPX4gL154TUwvOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggYzk4NjhjMy4uOTM4ZWU2ZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0zMDMs
NyArMzAzLDcgQEAgRU5ECiAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0
b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKTsKIEVORAogICAgIH0KLSAgICAK
KwogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7
CiAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAg
ICBteSAkYXR0ckV4dCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
OwpAQCAtMzI0LDExICszMjQsMTAgQEAgRU5ECiAgICAgICAgIH0KICAgICB9CiAKLSAgICBHZW5l
cmF0ZUhlYWRlclJ1bnRpbWVFbmFibGVyRGVjbGFyYXRpb25zKEBlbmFibGVkQXRSdW50aW1lKTsK
ICAgICBHZW5lcmF0ZUhlYWRlck5hbWVkQW5kSW5kZXhlZFByb3BlcnR5QWNjZXNzb3JzKCRkYXRh
Tm9kZSk7CiAgICAgR2VuZXJhdGVIZWFkZXJDdXN0b21DYWxsKCRkYXRhTm9kZSk7CiAgICAgR2Vu
ZXJhdGVIZWFkZXJDdXN0b21JbnRlcm5hbEZpZWxkSW5kaWNlcygkZGF0YU5vZGUpOwotICAgIAor
CiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrRG9tYWluU2Vj
dXJpdHkifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAgIHN0YXRp
YyBib29sIG5hbWVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4ga2V5LCB2ODo6QWNjZXNzVHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gZGF0YSk7CkBAIC0zNTcsNyArMzU2LDcgQEAgc3ViIEdldEludGVybmFsRmllbGRzCiB7CiAg
ICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CiAgICAgbXkgJG5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7
Ci0gICAgCisKICAgICAjIEZJWE1FOiBJIGFtIGhpZGVvdXMgYW5kIGhhcmQtY29kZWQuICBNYWtl
IG1lIGJlYXV0aWZ1bC4KICAgICByZXR1cm4gKCJjYWNoZUluZGV4IiwgImltcGxlbWVudGF0aW9u
SW5kZXgiKSBpZiAoJG5hbWUgZXEgIkRvY3VtZW50IikgfHwgKCRuYW1lIGVxICJTVkdEb2N1bWVu
dCIpOwogICAgIHJldHVybiAoImNhY2hlSW5kZXgiLCAiaW1wbGVtZW50YXRpb25JbmRleCIsICJt
YXJrZXJJbmRleCIsICJzaGFkb3dJbmRleCIpIGlmICRuYW1lIGVxICJIVE1MRG9jdW1lbnQiOwpA
QCAtNDEzLDI1ICs0MTIsNiBAQCBFTkQKIEVORAogfQogCi1zdWIgR2VuZXJhdGVIZWFkZXJSdW50
aW1lRW5hYmxlckRlY2xhcmF0aW9ucwotewotICAgIG15IEBlbmFibGVkQXRSdW50aW1lID0gQF87
Ci0gICAgCi0gICAgZm9yZWFjaCBteSAkcnVudGltZV9hdHRyIChAZW5hYmxlZEF0UnVudGltZSkg
ewotICAgICAgICBteSAkZW5hYmxlZEF0UnVudGltZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJh
dGVDb25kaXRpb25hbFN0cmluZygkcnVudGltZV9hdHRyLT5zaWduYXR1cmUpOwotICAgICAgICBt
eSAkZW5hYmxlciA9ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRydW50aW1lX2F0dHItPnNp
Z25hdHVyZS0+bmFtZSk7Ci0gICAgICAgIGlmICgkZW5hYmxlZEF0UnVudGltZUNvbmRpdGlvbmFs
U3RyaW5nKSB7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4jaWYgJHtlbmFi
bGVkQXRSdW50aW1lQ29uZGl0aW9uYWxTdHJpbmd9XG4iKTsKLSAgICAgICAgfQotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7Ci0gIHN0YXRpYyBib29sICR7ZW5hYmxlcn1FbmFi
bGVkKCk7Ci1FTkQKLSAgICAgICAgaWYgKCRlbmFibGVkQXRSdW50aW1lQ29uZGl0aW9uYWxTdHJp
bmcpIHsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCiBteSAlaW5kZXhlclNwZWNpYWxDYXNlcyA9ICgKICAgICAiU3Rv
cmFnZSIgPT4gMSwKICAgICAiSFRNTEFwcGxldEVsZW1lbnQiID0+IDEsCkBAIC00NjksNyArNDQ5
LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyTmFtZWRBbmRJbmRleGVkUHJvcGVydHlBY2Nlc3NvcnMK
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbmRleGVkUHJvcGVydHlHZXR0ZXIodWlu
dDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pOwogRU5ECiAgICAgfQot
ICAgICAgCisKICAgICBpZiAoJGlzSW5kZXhlclNwZWNpYWxDYXNlIHx8ICRoYXNDdXN0b21JbmRl
eGVkU2V0dGVyKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbmRleGVkUHJvcGVydHlTZXR0ZXIodWludDMyX3Qg
aW5kZXgsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKTsKQEAgLTUwNSw3ICs0ODUsNyBAQCBFTkQKIHN1YiBHZW5lcmF0ZUhlYWRlckN1c3Rv
bUNhbGwKIHsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKLSAgICAKKwogICAgIGlmICgkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21DYWxsIn0pIHsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWxsQXNG
dW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTtcbiIpOwogICAgIH0KQEAgLTk5
NCw3ICs5NzQsNyBAQCBzdWIgR2V0RnVuY3Rpb25UZW1wbGF0ZUNhbGxiYWNrTmFtZQogewogICAg
ICRmdW5jdGlvbiA9IHNoaWZ0OwogICAgICRkYXRhTm9kZSA9IHNoaWZ0OwotICAgIAorCiAgICAg
bXkgJGludGVyZmFjZU5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7CiAgICAgbXkgJG5hbWUgPSAkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKIApAQCAtMTA2Miw3ICsxMDQyLDcgQEAgRU5ECiAiICAg
ICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIiAuCiAiICAgIH1cbiIpOwogICAg
IH0KLSAgICAKKwogICAgIG15ICRyYWlzZXNFeGNlcHRpb25zID0gQHskZnVuY3Rpb24tPnJhaXNl
c0V4Y2VwdGlvbnN9OwogICAgIGlmICghJHJhaXNlc0V4Y2VwdGlvbnMpIHsKICAgICAgICAgZm9y
ZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKQEAgLTExNDcs
NyArMTEyNyw3IEBAIEVORAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIFY4
UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7XG4iKTsKICAgICB9
Ci0gICAgCisKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICB9XG5cbiIpOwogfQogCkBA
IC0xNDcwLDYgKzE0NTAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgcHVz
aChAaW1wbEZpeGVkSGVhZGVyLAogICAgICAgICAgIiNpbmNsdWRlIFwiY29uZmlnLmhcIlxuIiAu
CisgICAgICAgICAiI2luY2x1ZGUgXCJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmhcIlxuIiAuCiAg
ICAgICAgICAiI2luY2x1ZGUgXCJWOFByb3h5LmhcIlxuIiAuCiAgICAgICAgICAiI2luY2x1ZGUg
XCJWOEJpbmRpbmcuaFwiXG4iIC4KICAgICAgICAgICIjaW5jbHVkZSBcIlY4QmluZGluZ1N0YXRl
LmhcIlxuIiAuCkBAIC0xNTM4LDcgKzE1MTksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgIGlmICgkaGFzQ29uc3RydWN0b3JzKSB7CiAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0
b3JHZXR0ZXIoJGltcGxDbGFzc05hbWUsICRjbGFzc0luZGV4KTsKICAgICB9Ci0gICAKKwogICAg
IG15ICRpbmRleGVyOwogICAgIG15ICRuYW1lZFByb3BlcnR5R2V0dGVyOwogICAgICMgR2VuZXJh
dGUgbWV0aG9kcyBmb3IgZnVuY3Rpb25zLgpAQCAtMTU5OSw3ICsxNTgwLDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YSgk
ZGF0YU5vZGUsICRhdHRyaWJ1dGVzKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xu
Iik7CiAgICAgfQotICAgIAorCiAgICAgIyBTZXR1cCB0YWJsZSBvZiBzdGFuZGFyZCBjYWxsYmFj
ayBmdW5jdGlvbnMKICAgICAkbnVtX2NhbGxiYWNrcyA9IDA7CiAgICAgJGhhc19jYWxsYmFja3Mg
PSAwOwpAQCAtMTY5Nyw3ICsxNjc4LDcgQEAgRU5ECiAgICAgICAgICRwYXJlbnRDbGFzc0luZGV4
ID0gdWMoJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRwYXJlbnQpKTsKICAgICAgICAgbGFz
dDsKICAgICB9Ci0gICAgCisKICAgICAjIEdlbmVyYXRlIHRoZSB0ZW1wbGF0ZSBjb25maWd1cmF0
aW9uIG1ldGhvZAogICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwogc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmUke2NsYXNzTmFtZX1UZW1w
bGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYykgewpAQCAtMTcx
NCw3ICsxNjk1LDcgQEAgRU5ECiAgICAgICBOVUxMLCAwLAogRU5ECiAgICAgfQotICAgIAorCiAg
ICAgaWYgKCRoYXNfY2FsbGJhY2tzKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVO
RCk7CiAgICAgICAke2ludGVyZmFjZU5hbWV9X2NhbGxiYWNrcywgc2l6ZW9mKCR7aW50ZXJmYWNl
TmFtZX1fY2FsbGJhY2tzKS9zaXplb2YoKiR7aW50ZXJmYWNlTmFtZX1fY2FsbGJhY2tzKSk7CkBA
IC0xNzMyLDIwICsxNzEzLDIxIEBAIEVORAogICAgIH0KIAogICAgIGlmICgkYWNjZXNzX2NoZWNr
IG9yIEBlbmFibGVkQXRSdW50aW1lIG9yIEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9IG9yICRoYXNf
Y29uc3RhbnRzKSB7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwogICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRl
PiBpbnN0YW5jZSA9IGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAgdjg6OkxvY2FsPHY4OjpP
YmplY3RUZW1wbGF0ZT4gcHJvdG8gPSBkZXNjLT5Qcm90b3R5cGVUZW1wbGF0ZSgpOwogRU5ECiAg
ICAgfQogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICAiICAkYWNjZXNzX2NoZWNrXG4iKTsKLSAg
ICAKKwogICAgICMgU2V0dXAgdGhlIGVuYWJsZS1hdC1ydW50aW1lIGF0dHJzIGlmIHdlIGhhdmUg
dGhlbQogICAgIGZvcmVhY2ggbXkgJHJ1bnRpbWVfYXR0ciAoQGVuYWJsZWRBdFJ1bnRpbWUpIHsK
LSAgICAgICAgJGVuYWJsZV9mdW5jdGlvbiA9ICRpbnRlcmZhY2VOYW1lIC4gIjo6IiAuICRjb2Rl
R2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRydW50aW1lX2F0dHItPnNpZ25hdHVyZS0+bmFtZSk7Cisg
ICAgICAgICMgQSBmdW5jdGlvbiBuYW1lZCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp7bWV0aG9k
TmFtZX1FbmFibGVkKCkgbmVlZCB0byBiZSB3cml0dGVuIGJ5IGhhbmQuCisgICAgICAgICRlbmFi
bGVfZnVuY3Rpb24gPSAiUnVudGltZUVuYWJsZWRGZWF0dXJlczo6IiAuICRjb2RlR2VuZXJhdG9y
LT5XS19sY2ZpcnN0KCRydW50aW1lX2F0dHItPnNpZ25hdHVyZS0+bmFtZSkgLiAiRW5hYmxlZCI7
CiAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJp
bmcoJHJ1bnRpbWVfYXR0ci0+c2lnbmF0dXJlKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVjgke2VuYWJsZV9mdW5jdGlvbn1F
bmFibGVkKCkpIHtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoJHtl
bmFibGVfZnVuY3Rpb259KCkpIHtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVxcXG4iKTsKICAg
ICAgICAgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlKCRpbnRlcmZhY2VOYW1lLCAkcnVu
dGltZV9hdHRyLCAiOyIsICIgICAgIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVO
RCk7CkBAIC0xNzg1LDggKzE3NjcsOCBAQCBFTkQKICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0g
IiI7CiAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJFbmFibGVkQXRSdW50aW1lIn0pIHsKICAgICAg
ICAgICAgICMgT25seSBjYWxsIFNldCgpL1NldEFjY2Vzc29yKCkgaWYgdGhpcyBtZXRob2Qgc2hv
dWxkIGJlIGVuYWJsZWQKLSAgICAgICAgICAgICRlbmFibGVfZnVuY3Rpb24gPSAkaW50ZXJmYWNl
TmFtZSAuICI6OiIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+bmFtZSk7Ci0gICAgICAgICAgICAkY29uZGl0aW9uYWwgPSAiaWYgKFY4JHtlbmFibGVf
ZnVuY3Rpb259RW5hYmxlZCgpKVxuIjsKKyAgICAgICAgICAgICRlbmFibGVfZnVuY3Rpb24gPSAi
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6IiAuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKSAuICJFbmFibGVkIjsKKyAgICAgICAgICAgICRjb25k
aXRpb25hbCA9ICJpZiAoJHtlbmFibGVfZnVuY3Rpb259KCkpXG4iOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCRhdHRyRXh0LT57IkRvTm90Q2hlY2tEb21haW5TZWN1cml0eSJ9ICYmCkBAIC0x
ODMzLDI0ICsxODE1LDI0IEBAIEVORAogCiAgICAgICAjIE5vcm1hbCBmdW5jdGlvbiBjYWxsIGlz
IGEgdGVtcGxhdGUKICAgICAgIG15ICRjYWxsYmFjayA9IEdldEZ1bmN0aW9uVGVtcGxhdGVDYWxs
YmFja05hbWUoJGZ1bmN0aW9uLCAkZGF0YU5vZGUpOwotICAgICAgCisKICAgICAgIGlmICgkcHJv
cGVydHlfYXR0cmlidXRlcyBlcSAidjg6OkRvbnREZWxldGUiKSB7CiAgICAgICAgICAgJHByb3Bl
cnR5X2F0dHJpYnV0ZXMgPSAiIjsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgJHByb3BlcnR5
X2F0dHJpYnV0ZXMgPSAiLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRwcm9w
ZXJ0eV9hdHRyaWJ1dGVzKSI7CiAgICAgICB9Ci0gICAgICAKKwogICAgICAgaWYgKCR0ZW1wbGF0
ZSBlcSAicHJvdG8iICYmICRjb25kaXRpb25hbCBlcSAiIiAmJiAkc2lnbmF0dXJlIGVxICJkZWZh
dWx0X3NpZ25hdHVyZSIgJiYgJHByb3BlcnR5X2F0dHJpYnV0ZXMgZXEgIiIpIHsKICAgICAgICAg
ICAjIFN0YW5kYXJkIHR5cGUgb2YgY2FsbGJhY2ssIGFscmVhZHkgY3JlYXRlZCBpbiB0aGUgYmF0
Y2gsIHNvIHNraXAgaXQgaGVyZS4KICAgICAgICAgICBuZXh0OwogICAgICAgfQotICAgICAgCisK
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAgICR7Y29uZGl0aW9uYWx9JHRlbXBs
YXRlLT5TZXQodjg6OlN0cmluZzo6TmV3KCIkbmFtZSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KCRjYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksICR7c2lnbmF0dXJlfSkkcHJv
cGVydHlfYXR0cmlidXRlcyk7CiBFTkQKICAgICAgICRudW1fY2FsbGJhY2tzKys7CiAgICAgfQot
ICAgIAorCiAgICAgZGllICJXcm9uZyBudW1iZXIgb2YgY2FsbGJhY2tzIGdlbmVyYXRlZCBmb3Ig
JGludGVyZmFjZU5hbWUgKCRudW1fY2FsbGJhY2tzLCBzaG91bGQgYmUgJHRvdGFsX2Z1bmN0aW9u
cykiIGlmICRudW1fY2FsbGJhY2tzICE9ICR0b3RhbF9mdW5jdGlvbnM7CiAKICAgICBpZiAoJGhh
c19jb25zdGFudHMpIHsKQEAgLTE4NTgsMTEgKzE4NDAsMTEgQEAgRU5ECiAgIGJhdGNoQ29uZmln
dXJlQ29uc3RhbnRzKGRlc2MsIHByb3RvLCAke2ludGVyZmFjZU5hbWV9X2NvbnN0cywgc2l6ZW9m
KCR7aW50ZXJmYWNlTmFtZX1fY29uc3RzKS9zaXplb2YoKiR7aW50ZXJmYWNlTmFtZX1fY29uc3Rz
KSk7CiBFTkQKICAgICB9Ci0gICAgCisKICAgICAjIFNwZWNpYWwgY2FzZXMKICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
IDw8RU5EKTsKLSAKKwogICBwcm90by0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4RE9NV2luZG93
OjppbnRlcm5hbEZpZWxkQ291bnQpOwogICBkZXNjLT5TZXRIaWRkZW5Qcm90b3R5cGUodHJ1ZSk7
CiAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhET01XaW5kb3c6OmludGVybmFs
RmllbGRDb3VudCk7CkBAIC0xODc0LDggKzE4NTYsOCBAQCBFTkQKICAgICB9CiAgICAgaWYgKCRp
bnRlcmZhY2VOYW1lIGVxICJMb2NhdGlvbiIpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
IDw8RU5EKTsKLSAKLSAgLy8gRm9yIHNlY3VyaXR5IHJlYXNvbnMsIHRoZXNlIGZ1bmN0aW9ucyBh
cmUgb24gdGhlIGluc3RhbmNlIGluc3RlYWQgCisKKyAgLy8gRm9yIHNlY3VyaXR5IHJlYXNvbnMs
IHRoZXNlIGZ1bmN0aW9ucyBhcmUgb24gdGhlIGluc3RhbmNlIGluc3RlYWQKICAgLy8gb2Ygb24g
dGhlIHByb3RvdHlwZSBvYmplY3QgdG8gaW5zdXJlIHRoYXQgdGhleSBjYW5ub3QgYmUgb3Zlcndy
aXR0ZW4uCiAgIGluc3RhbmNlLT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoInJlbG9hZCIp
LCBWOExvY2F0aW9uOjpyZWxvYWRBY2Nlc3NvckdldHRlciwgMCwgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6OkRvbnREZWxldGUgfCB2ODo6UmVhZE9ubHkpKTsKICAgaW5zdGFuY2UtPlNldEFjY2Vz
c29yKHY4OjpTdHJpbmc6Ok5ldygicmVwbGFjZSIpLCBWOExvY2F0aW9uOjpyZXBsYWNlQWNjZXNz
b3JHZXR0ZXIsIDAsIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6QUxMX0NBTl9SRUFELCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlIHwgdjg6OlJl
YWRPbmx5KSk7CkBAIC0xODg4LDcgKzE4NzAsNyBAQCBFTkQKICAgICAgICAgJG5hdGl2ZVR5cGUg
PSAiVjhTVkdQT0RUeXBlV3JhcHBlcjwke25hdGl2ZVR5cGV9PiI7CiAgICAgfQogICAgIHB1c2go
QGltcGxDb250ZW50LCA8PEVORCk7Ci0gIAorCiAgIC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0
ZQogICBkZXNjLT5TZXQoZ2V0VG9TdHJpbmdOYW1lKCksIGdldFRvU3RyaW5nVGVtcGxhdGUoKSk7
CiAgIHJldHVybiBkZXNjOwpAQCAtMTkwNSw3ICsxODg3LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+ICR7Y2xhc3NOYW1lfTo6R2V0VGVtcGxhdGUoKSB7CiB9CiAKICR7
bmF0aXZlVHlwZX0qICR7Y2xhc3NOYW1lfTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBvYmplY3QpIHsKLSAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8JHtuYXRpdmVUeXBlfSo+KG9i
amVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4
KSk7IAorICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDwke25hdGl2ZVR5cGV9Kj4ob2JqZWN0LT5H
ZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsKIH0K
IAogYm9vbCAke2NsYXNzTmFtZX06Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSkgewpAQCAtMTkyNiw3ICsxOTA4LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRl
bXBsYXRlPiBWOERPTVdpbmRvdzo6R2V0U2hhZG93T2JqZWN0VGVtcGxhdGUoKSB7CiB9CiBFTkQK
ICAgICB9Ci0gICAgCisKICAgICBHZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzKCRkYXRhTm9kZSwgJGlu
dGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRuYXRpdmVUeXBlKTsKIAogICAgIHB1c2goQGltcGxD
b250ZW50LCA8PEVORCk7CkBAIC0xOTM2LDE5ICsxOTE4LDE5IEBAIEVORAogICAgIHB1c2goQGlt
cGxDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25k
aXRpb25hbFN0cmluZzsKIH0KIAotc3ViIEdlbmVyYXRlVG9WOENvbnZlcnRlcnMgCitzdWIgR2Vu
ZXJhdGVUb1Y4Q29udmVydGVycwogewogICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwogICAgIG15
ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAgICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OwogICAg
IG15ICRuYXRpdmVUeXBlID0gc2hpZnQ7Ci0gICAgCisKICAgICBteSAkd3JhcHBlclR5cGUgPSAi
VjhDbGFzc0luZGV4OjoiIC4gdWMoJGludGVyZmFjZU5hbWUpOwogICAgIG15ICRkb21NYXBGdW5j
dGlvbiA9IEdldERvbU1hcEZ1bmN0aW9uKCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOwogICAg
IG15ICRmb3JjZU5ld09iamVjdElucHV0ID0gSXNET01Ob2RlVHlwZSgkaW50ZXJmYWNlTmFtZSkg
PyAiLCBib29sIGZvcmNlTmV3T2JqZWN0IiA6ICIiOwogICAgIG15ICRmb3JjZU5ld09iamVjdENh
bGwgPSBJc0RPTU5vZGVUeXBlKCRpbnRlcmZhY2VOYW1lKSA/ICIsIGZvcmNlTmV3T2JqZWN0IiA6
ICIiOwotICAgIAotICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7ICAgCisKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOwogCiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+ICR7Y2xhc3NO
YW1lfTo6d3JhcCgke25hdGl2ZVR5cGV9KiBpbXBsJHtmb3JjZU5ld09iamVjdElucHV0fSkgewog
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXI7CkBAIC0yMDAzLDcgKzE5ODUsNyBAQCBF
TkQKICAgICBjb250ZXh0LT5FeGl0KCk7CiBFTkQKICAgICB9Ci0gICAgCisKICAgICBwdXNoKEBp
bXBsQ29udGVudCwgPDxFTkQpOwogICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgcmV0dXJu
IHdyYXBwZXI7CkBAIC0yMDI5LDcgKzIwMTEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OChQYXNzUmVmUHRyPCR7bmF0aXZlVHlwZX0gPiBpbXBsJHtmb3JjZU5ld09iamVjdElucHV0fQog
fQogRU5ECiAgICAgfQotICAgIAorCiAgICAgaWYgKCFIYXNDdXN0b21Ub1Y4SW1wbGVtZW50YXRp
b24oJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSkpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIDw8RU5EKTsKIApAQCAtMjA0Niw3ICsyMDI4LDcgQEAgc3ViIEhhc0N1c3RvbVRvVjhJbXBs
ZW1lbnRhdGlvbiB7CiAgICAgIyBGSVhNRTogVGhpcyBzdWJyb3V0aW5lIGlzIGxhbWUuIFByb2Jh
Ymx5IHNob3VsZCBiZSBhbiAuaWRsIGF0dHJpYnV0ZSAoQ3VzdG9tVG9WOCk/CiAgICAgJGRhdGFO
b2RlID0gc2hpZnQ7CiAgICAgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKLSAgICAKKwogICAgICMg
V2UgZ2VuZXJhdGUgYSBjdXN0b20gY29udmVydGVyIChidXQgSlNDIGRvZXNuJ3QpIGZvciB0aGUg
Zm9sbG93aW5nOgogICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2VOYW1lIGVxICJCYXJJbmZvIjsK
ICAgICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiQ1NTU3R5bGVTaGVldCI7CkBAIC0y
MDY0LDcgKzIwNDYsNiBAQCBzdWIgSGFzQ3VzdG9tVG9WOEltcGxlbWVudGF0aW9uIHsKICAgICBy
ZXR1cm4gMSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiU1ZHRWxlbWVudCI7CiAgICAgcmV0dXJuIDEg
aWYgJGludGVyZmFjZU5hbWUgZXEgIlNjcmVlbiI7CiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFj
ZU5hbWUgZXEgIldvcmtlckNvbnRleHQiOwotICAgIAogICAgICMgV2UgZG9uJ3QgZ2VuZXJhdGUg
YSBjdXN0b20gY29udmVydGVyIChidXQgSlNDIGRvZXMpIGZvciB0aGUgZm9sbG93aW5nOgogICAg
IHJldHVybiAwIGlmICRpbnRlcmZhY2VOYW1lIGVxICJBYnN0cmFjdFdvcmtlciI7CiAgICAgcmV0
dXJuIDAgaWYgJGludGVyZmFjZU5hbWUgZXEgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQiOwpAQCAt
MjI5Myw3ICsyMjc0LDcgQEAgc3ViIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlCiAgICAgfQog
CiAgICAgJHR5cGUgPSBHZXROYXRpdmVUeXBlKCR0eXBlLCAkcGFyYW1ldGVySW5kZXggPj0gMCA/
IDEgOiAwKTsKLSAgICAKKwogICAgIGlmICgkcGFyYW1ldGVySW5kZXggPj0gMCAmJiAkdHlwZSBl
cSAiVjhQYXJhbWV0ZXIiKSB7CiAgICAgICAgIG15ICRtb2RlID0gIiI7CiAgICAgICAgIGlmICgk
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29udmVydFVuZGVmaW5lZE9yTnVsbFRv
TnVsbFN0cmluZyJ9KSB7CkBAIC0yMzAzLDcgKzIyODQsNyBAQCBzdWIgR2V0TmF0aXZlVHlwZUZy
b21TaWduYXR1cmUKICAgICAgICAgfQogICAgICAgICAkdHlwZSAuPSAiPCRtb2RlPiI7CiAgICAg
fQotICAgIAorCiAgICAgcmV0dXJuICR0eXBlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTQ4MDQ4MC4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1J1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0xvY2FsU3RvcmFn
ZUVuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1Nlc3Npb25T
dG9yYWdlRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzTm90
aWZpY2F0aW9uc0VuYWJsZWQgPSBmYWxzZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
aXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA9IGZhbHNlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjppc0dlb2xvY2F0aW9uRW5hYmxlZCA9IGZhbHNlOwotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjppc0luZGV4ZWREYXRhYmFzZUVuYWJsZWQgPSBmYWxzZTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQyODAwNC4uMDAwMDAwMAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXNfaAotI2Rl
ZmluZSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzX2gKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0v
LyBBIGNsYXNzIHRoYXQgc3RvcmVzIHN0YXRpYyBlbmFibGVycyBmb3IgYWxsIGV4cGVyaW1lbnRh
bCBmZWF0dXJlcwotY2xhc3MgUnVudGltZUVuYWJsZWRGZWF0dXJlcyB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgc2V0TG9jYWxTdG9yYWdlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0xv
Y2FsU3RvcmFnZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBsb2NhbFN0
b3JhZ2VFbmFibGVkKCkgeyByZXR1cm4gaXNMb2NhbFN0b3JhZ2VFbmFibGVkOyB9Ci0KLSAgICBz
dGF0aWMgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNT
ZXNzaW9uU3RvcmFnZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBzZXNz
aW9uU3RvcmFnZUVuYWJsZWQoKSB7IHJldHVybiBpc1Nlc3Npb25TdG9yYWdlRW5hYmxlZDsgfQot
Ci0gICAgc3RhdGljIHZvaWQgc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgaXNOb3RpZmljYXRpb25zRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29s
IG5vdGlmaWNhdGlvbnNFbmFibGVkKCkgeyByZXR1cm4gaXNOb3RpZmljYXRpb25zRW5hYmxlZDsg
fQotCi0gICAgc3RhdGljIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZUVuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0
YXRpYyBib29sIGFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgeyByZXR1cm4gaXNBcHBsaWNhdGlv
bkNhY2hlRW5hYmxlZDsgfQotCi0gICAgc3RhdGljIHZvaWQgc2V0R2VvbG9jYXRpb25FbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IGlzR2VvbG9jYXRpb25FbmFibGVkID0gaXNFbmFibGVkOyB9Ci0g
ICAgc3RhdGljIGJvb2wgZ2VvbG9jYXRpb25FbmFibGVkKCkgeyByZXR1cm4gaXNHZW9sb2NhdGlv
bkVuYWJsZWQ7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldEluZGV4ZWREYXRhYmFzZUVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgaXNJbmRleGVkRGF0YWJhc2VFbmFibGVkID0gaXNFbmFibGVkOyB9
Ci0gICAgc3RhdGljIGJvb2wgaW5kZXhlZERhdGFiYXNlRW5hYmxlZCgpIHsgcmV0dXJuIGlzSW5k
ZXhlZERhdGFiYXNlRW5hYmxlZDsgfQotCi1wcml2YXRlOgotICAgIC8vIE5ldmVyIGluc3RhbnRp
YXRlLgotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKSB7IH0KLQotICAgIHN0YXRpYyBib29s
IGlzTG9jYWxTdG9yYWdlRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc1Nlc3Npb25TdG9yYWdl
RW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc05vdGlmaWNhdGlvbnNFbmFibGVkOwotICAgIHN0
YXRpYyBib29sIGlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNH
ZW9sb2NhdGlvbkVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNJbmRleGVkRGF0YWJhc2VFbmFi
bGVkOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUnVudGltZUVu
YWJsZWRGZWF0dXJlc19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdp
bmRvd0N1c3RvbS5jcHAKaW5kZXggNGI3ZjgxOS4uMzgyOGRlOCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMSwxMCArMSwxMCBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogCisgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0g
KiAKKyAqCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQsNyArMTQsNyBA
QAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiTWVk
aWFQbGF5ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4u
aCIKLSNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NoZWR1
bGVkQWN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgpAQCAtOTUsOSArOTQsOSBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gV2luZG93U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9v
bCBzaW5nbAogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2OFN0cmluZyA9IGZ1bmN0aW9uLT5Ub1N0cmluZygpOwogCi0gICAgICAgICAgICAvLyBCYWls
IG91dCBpZiBzdHJpbmcgY29udmVyc2lvbiBmYWlsZWQuIAotICAgICAgICAgICAgaWYgKHY4U3Ry
aW5nLklzRW1wdHkoKSkgCi0gICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsg
CisgICAgICAgICAgICAvLyBCYWlsIG91dCBpZiBzdHJpbmcgY29udmVyc2lvbiBmYWlsZWQuCisg
ICAgICAgICAgICBpZiAodjhTdHJpbmcuSXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uU3RyaW5nID0gdG9XZWJD
b3JlU3RyaW5nKHY4U3RyaW5nKTsKICAgICAgICAgfQpAQCAtMjI4LDcgKzIyNyw3IEBAIHZvaWQg
VjhET01XaW5kb3c6Om9wZW5lckFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6CiAKICAgICBpZiAoIVY4QmluZGluZ1NlY3VyaXR5OjpjYW5BY2Nl
c3NGcmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBpbXAtPmZyYW1lKCksIHRydWUpKQogICAg
ICAgICByZXR1cm47Ci0gIAorCiAgICAgLy8gT3BlbmVyIGNhbiBiZSBzaGFkb3dlZCBpZiBpdCBp
cyBpbiB0aGUgc2FtZSBkb21haW4uCiAgICAgLy8gSGF2ZSBhIHNwZWNpYWwgaGFuZGxpbmcgb2Yg
bnVsbCB2YWx1ZSB0byBiZWhhdmUKICAgICAvLyBsaWtlIEZpcmVmb3guIFNlZSBidWcgaHR0cDov
L2IvMTIyNDg4NyAmIGh0dHA6Ly9iLzc5MTcwNi4KQEAgLTI1NCw4NSArMjUzLDYgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpBdWRpb0FjY2Vzc29yR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW0KICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpnZXRDb25zdHJ1Y3Rv
cihWOENsYXNzSW5kZXg6OkFVRElPLCB3aW5kb3cpOwogfQogCi1ib29sIFY4RE9NV2luZG93OjpB
dWRpb0VuYWJsZWQoKQotewotICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsK
LX0KLQotYm9vbCBWOERPTVdpbmRvdzo6SFRNTE1lZGlhRWxlbWVudEVuYWJsZWQoKQotewotICAg
IHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKLX0KLQotYm9vbCBWOERPTVdpbmRv
dzo6SFRNTEF1ZGlvRWxlbWVudEVuYWJsZWQoKQotewotICAgIHJldHVybiBNZWRpYVBsYXllcjo6
aXNBdmFpbGFibGUoKTsKLX0KLQotYm9vbCBWOERPTVdpbmRvdzo6SFRNTFZpZGVvRWxlbWVudEVu
YWJsZWQoKQotewotICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKLX0KLQot
Ym9vbCBWOERPTVdpbmRvdzo6TWVkaWFFcnJvckVuYWJsZWQoKQotewotICAgIHJldHVybiBNZWRp
YVBsYXllcjo6aXNBdmFpbGFibGUoKTsKLX0KLQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU0hBUkVE
X1dPUktFUlMpCi1ib29sIFY4RE9NV2luZG93OjpTaGFyZWRXb3JrZXJFbmFibGVkKCkKLXsKLSAg
ICByZXR1cm4gU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aXNBdmFpbGFibGUoKTsKLX0KLSNlbmRp
ZgotCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotYm9vbCBWOERPTVdpbmRvdzo6V2ViU29ja2V0
RW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIFdlYlNvY2tldDo6aXNBdmFpbGFibGUoKTsKLX0KLSNl
bmRpZgotCi0jaWYgRU5BQkxFKERBVEFCQVNFKQotYm9vbCBWOERPTVdpbmRvdzo6T3BlbkRhdGFi
YXNlRW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIERhdGFiYXNlOjppc0F2YWlsYWJsZSgpOwotfQot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLWJvb2wgVjhET01XaW5kb3c6
OkluZGV4ZWREQkVuYWJsZWQoKQotewotICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjppbmRleGVkRGF0YWJhc2VFbmFibGVkKCk7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShET01f
U1RPUkFHRSkKLWJvb2wgVjhET01XaW5kb3c6OkxvY2FsU3RvcmFnZUVuYWJsZWQoKQotewotICAg
IHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsb2NhbFN0b3JhZ2VFbmFibGVkKCk7Ci19
Ci0KLWJvb2wgVjhET01XaW5kb3c6OlNlc3Npb25TdG9yYWdlRW5hYmxlZCgpCi17Ci0gICAgcmV0
dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNlc3Npb25TdG9yYWdlRW5hYmxlZCgpOwotfQot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLWJvb2wgVjhET01XaW5kb3c6Oldl
YmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkKCkKLXsKLSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6bm90aWZpY2F0aW9uc0VuYWJsZWQoKTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxF
KE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKLWJvb2wgVjhET01XaW5kb3c6OkFwcGxpY2F0aW9u
Q2FjaGVFbmFibGVkKCkKLXsKLSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6YXBw
bGljYXRpb25DYWNoZUVuYWJsZWQoKTsKLX0KICNlbmRpZgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhET01XaW5kb3c6OkltYWdlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC01OTUsNyArNTE1LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2dDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJh
bWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUuCiAgICAgd2luZG93RmVhdHVyZXMuaGVpZ2h0ID0g
V2luZG93RmVhdHVyZXM6OmZsb2F0RmVhdHVyZShmZWF0dXJlcywgImRpYWxvZ2hlaWdodCIsIDEw
MCwgc2NyZWVuUmVjdC5oZWlnaHQoKSwgNDUwKTsKICAgICB3aW5kb3dGZWF0dXJlcy5oZWlnaHRT
ZXQgPSB0cnVlOwotICAKKwogICAgIHdpbmRvd0ZlYXR1cmVzLnggPSBXaW5kb3dGZWF0dXJlczo6
ZmxvYXRGZWF0dXJlKGZlYXR1cmVzLCAiZGlhbG9nbGVmdCIsIHNjcmVlblJlY3QueCgpLCBzY3Jl
ZW5SZWN0LnJpZ2h0KCkgLSB3aW5kb3dGZWF0dXJlcy53aWR0aCwgLTEpOwogICAgIHdpbmRvd0Zl
YXR1cmVzLnhTZXQgPSB3aW5kb3dGZWF0dXJlcy54ID4gMDsKICAgICB3aW5kb3dGZWF0dXJlcy55
ID0gV2luZG93RmVhdHVyZXM6OmZsb2F0RmVhdHVyZShmZWF0dXJlcywgImRpYWxvZ3RvcCIsIHNj
cmVlblJlY3QueSgpLCBzY3JlZW5SZWN0LmJvdHRvbSgpIC0gd2luZG93RmVhdHVyZXMuaGVpZ2h0
LCAtMSk7CkBAIC02OTQsMTEgKzYxNCwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01X
aW5kb3c6Om9wZW5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmICh0
b3BPclBhcmVudCkgewogICAgICAgICBpZiAoIXNob3VsZEFsbG93TmF2aWdhdGlvbihmcmFtZSkp
CiAgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIAorCiAgICAgICAgIFN0
cmluZyBjb21wbGV0ZWRVcmw7CiAgICAgICAgIGlmICghdXJsU3RyaW5nLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIGNvbXBsZXRlZFVybCA9IGNvbXBsZXRlVVJMKHVybFN0cmluZyk7Ci0gICAgCisK
ICAgICAgICAgaWYgKCFjb21wbGV0ZWRVcmwuaXNFbXB0eSgpICYmCiAgICAgICAgICAgICAoIXBy
b3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlZFVybCkgfHwgU2NyaXB0Q29udHJvbGxlcjo6aXNT
YWZlU2NyaXB0KGZyYW1lKSkpIHsKICAgICAgICAgICAgIGJvb2wgdXNlckdlc3R1cmUgPSBwcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TmF2aWdhdG9yQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TmF2aWdhdG9yQ3VzdG9tLmNwcAppbmRleCA3NTkyMmU3Li40MmUxNzE4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20uY3BwCkBAIC0xLDEwICsx
LDEwIEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiAKKyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1l
dDoKLSAqIAorICoKICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsx
NCw3IEBACiAgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCiAgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
ICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTM3LDEzICszNyw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLWJvb2wgVjhOYXZpZ2F0
b3I6Okdlb2xvY2F0aW9uRW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6Omdlb2xvY2F0aW9uRW5hYmxlZCgpOwotfQotI2VuZGlmCi0KIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4KE5hdmlnYXRvciogaW1wbCkKIHsKICAgICBpZiAoIWltcGwpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApp
bmRleCA4MDViNzQ2Li43Njc3ZTI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKIAogI2lu
Y2x1ZGUgIkRPTVRpbWVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIK
ICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCkBAIC00NywyMCAr
NDYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKLWJvb2wgVjhXb3JrZXJDb250ZXh0OjpXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCgpCi17
Ci0gICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om5vdGlmaWNhdGlvbnNFbmFibGVk
KCk7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLWJvb2wgVjhXb3JrZXJD
b250ZXh0OjpXZWJTb2NrZXRFbmFibGVkKCkKLXsKLSAgICByZXR1cm4gV2ViU29ja2V0Ojppc0F2
YWlsYWJsZSgpOwotfQotI2VuZGlmCi0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBTZXRUaW1lb3V0
T3JJbnRlcnZhbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmdsZVNob3QpCiB7
CiAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4V29ya2VyQ29udGV4dDo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlJ1bnRpbWVGZWF0dXJlcy5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJ1bnRpbWVGZWF0
dXJlcy5jcHAKaW5kZXggMGVmOGI5Yi4uYWQ4NDc2NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUnVudGltZUZlYXR1cmVzLmNwcApAQCAtMTIzLDE0ICsxMjMsMTQgQEAgYm9vbCBXZWJSdW50
aW1lRmVhdHVyZXM6OmlzU29ja2V0c0VuYWJsZWQoKQogdm9pZCBXZWJSdW50aW1lRmVhdHVyZXM6
OmVuYWJsZU5vdGlmaWNhdGlvbnMoYm9vbCBlbmFibGUpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQoZW5hYmxlKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRXZWJraXROb3RpZmlj
YXRpb25zRW5hYmxlZChlbmFibGUpOwogI2VuZGlmCiB9CiAKIGJvb2wgV2ViUnVudGltZUZlYXR1
cmVzOjppc05vdGlmaWNhdGlvbnNFbmFibGVkKCkKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKLSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bm90aWZpY2F0aW9uc0VuYWJs
ZWQoKTsKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Tm90aWZpY2F0
aW9uc0VuYWJsZWQoKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0xNzEs
MTQgKzE3MSwxNCBAQCBib29sIFdlYlJ1bnRpbWVGZWF0dXJlczo6aXNHZW9sb2NhdGlvbkVuYWJs
ZWQoKQogdm9pZCBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZUluZGV4ZWREYXRhYmFzZShib29s
IGVuYWJsZSkKIHsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzZXRJbmRleGVkRGF0YWJhc2VFbmFibGVkKGVuYWJsZSk7CisgICAgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2V0SW5kZXhlZERCRW5hYmxlZChlbmFibGUpOwogI2VuZGlm
CiB9CiAKIGJvb2wgV2ViUnVudGltZUZlYXR1cmVzOjppc0luZGV4ZWREYXRhYmFzZUVuYWJsZWQo
KQogewogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIHJldHVybiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjppbmRleGVkRGF0YWJhc2VFbmFibGVkKCk7CisgICAgcmV0dXJuIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmluZGV4ZWREQkVuYWJsZWQoKTsKICNlbHNlCiAgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>