<?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>55910</bug_id>
          
          <creation_ts>2011-03-07 15:56:28 -0800</creation_ts>
          <short_desc>Make CodeBlock GC write barrier safe</short_desc>
          <delta_ts>2011-03-09 08:47:17 -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>
          <dependson>56019</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>363662</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-07 15:56:28 -0800</bug_when>
    <thetext>Make CodeBlock GC write barrier safe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363686</commentid>
    <comment_count>1</comment_count>
      <attachid>84997</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-07 16:49:44 -0800</bug_when>
    <thetext>Created attachment 84997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363688</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-07 16:51:25 -0800</bug_when>
    <thetext>Attachment 84997 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/bytecode/EvalCodeCache.h:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363706</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-07 17:41:42 -0800</bug_when>
    <thetext>Attachment 84997 did not build on win:
Build output: http://queues.webkit.org/results/8101656</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363758</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-07 18:59:19 -0800</bug_when>
    <thetext>Attachment 84997 did not build on qt:
Build output: http://queues.webkit.org/results/8105657</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364039</commentid>
    <comment_count>5</comment_count>
      <attachid>85061</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-08 11:09:39 -0800</bug_when>
    <thetext>Created attachment 85061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364041</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-08 11:12:08 -0800</bug_when>
    <thetext>Attachment 85061 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/bytecode/EvalCodeCache.h:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364075</commentid>
    <comment_count>7</comment_count>
      <attachid>85061</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-03-08 11:55:40 -0800</bug_when>
    <thetext>Comment on attachment 85061
Patch

Please fix the ASSERTs to check JSFinalObject fully fills its allocation, and revert the JSZombie changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364182</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-08 15:19:12 -0800</bug_when>
    <thetext>Committed r80598: &lt;http://trac.webkit.org/changeset/80598&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364295</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-08 20:18:07 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80598 might have broken Qt Linux Release
The following tests are not passing:
jquery/manipulation.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364519</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-03-09 08:47:17 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; http://trac.webkit.org/changeset/80598 might have broken Qt Linux Release
&gt; The following tests are not passing:
&gt; jquery/manipulation.html

I filed a new bug on it: https://bugs.webkit.org/show_bug.cgi?id=56019</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84997</attachid>
            <date>2011-03-07 16:49:44 -0800</date>
            <delta_ts>2011-03-08 11:09:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55910-20110307164943.patch</filename>
            <type>text/plain</type>
            <size>70205</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA0NzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDk0
NGM1ZGY4NjA5YjBiZGM2MjkyNGU0MDY3YTg4MDE3YWRkYjM4ZGUuLjYwNmY2N2JkZjVhZjVjOTJj
OGRiZWRjMmEyMWUzNWQwYjJmODYwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyNCBAQAorMjAxMS0wMy0wNyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgQ29k
ZUJsb2NrIEdDIHdyaXRlIGJhcnJpZXIgc2FmZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU5MTAKKworICAgICAgICBJbiBvcmRlciB0byBtYWtlIENv
ZGVCbG9jayBXcml0ZUJhcnJpZXIgc2FmZSBpdCB3YXMgbmVjZXNzYXJ5CisgICAgICAgIHRvIG1h
a2UgaXQgaGF2ZSBhIHNpbmdsZSBHQyBvd25lciwgYW5kIGZvciB0aGF0IHJlYXNvbiBJIGhhdmUK
KyAgICAgICAgbWFkZSBFeGVjdXRhYmxlQmFzZSBhIEdDIGFsbG9jYXRlZCBvYmplY3QuICBUaGlz
IHJlcXVpcmVkCisgICAgICAgIHVwZGF0aW5nIHRoZWlyIGNyZWF0aW9uIHJvdXRpbmVzIGFzIHdl
bGwgYXMgYWxsIHNpdGVzIHRoYXQgaG9sZAorICAgICAgICBhIHJlZmVyZW5jZSB0byB0aGVtLiAg
R0Mgb2JqZWN0cyB0aGF0IGhlbGQgRXhlY3V0YWJsZSdzIGhhdmUgYmVlbgorICAgICAgICBjb252
ZXJ0ZWQgdG8gV3JpdGVCYXJyaWVycywgYW5kIGFsbCBvdGhlciBzaXRlcyBub3cgdXNlIEdsb2Jh
bDw+LgorCisgICAgICAgIEFzIGFuIGFkZGVkIGJlbmVmaXQgdGhpcyBnZXRzIHJpZCBvZiBKU0ds
b2JhbERhdGEncyBsaXN0IG9mCisgICAgICAgIEdsb2JhbENvZGVCbG9ja3MuCisKKyAgICAgICAg
UGVyZiB0ZXN0aW5nIHNob3dzIGEgMC41JSBwcm9ncmVzc2lvbiBvbiB2OCwgdnMuIGEgMC4zJSBy
ZWdyZXNzaW9uCisgICAgICAgIG9uIFN1blNwaWRlci4gIEdpdmVuIG5vbmUgb2YgdGhlIHRlc3Rz
IHRoYXQgc2hvdyByZWdyZXNzaW9ucworICAgICAgICBkZW1vbnN0cmF0ZSBhIHJlZ3Jlc3Npb24g
b24gdGhlaXIgb3duLCBhbmQgc2FtcGxpbmcgc2hvd3MgdXAgbm90aGluZy4KKyAgICAgICAgSSBz
dXNwZWN0IHdlJ3JlIGp1c3QgZ2V0dGluZyBvbmUgb3IgdHdvIGFkZGl0aW9uYWwgZ2MgcGFzc2Vz
IGF0CisgICAgICAgIHRoZSBlbmQgb2YgdGhlIHJ1bi4KKworICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6
bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWFya0FnZ3JlZ2F0ZSk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6b3duZXJFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRDb25zdGFu
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y29uc3RhbnRSZWdpc3Rlcik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6Z2V0Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmFkZEZ1bmN0aW9uRGVjbCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnVuY3Rpb25F
eHByKToKKyAgICAgICAgKEpTQzo6R2xvYmFsQ29kZUJsb2NrOjpHbG9iYWxDb2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnIpOgorICAgICAgICAqIGJ5dGVjb2RlL0V2YWxDb2Rl
Q2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0KToKKyAgICAgICAgKiBi
eXRlY29kZS9TYW1wbGluZ1Rvb2wuaDoKKyAgICAgICAgKEpTQzo6U2NyaXB0U2FtcGxlUmVjb3Jk
OjpTY3JpcHRTYW1wbGVSZWNvcmQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGFu
dFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9w
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogZGVidWdn
ZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1l
KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2FsbEV2YWwpOgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dExvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkSW50MzJUb0RvdWJsZSk6
CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpK
SVRUaHVua3MpOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIpOgor
ICAgICAgICAoSlNDOjpKSVRUaHVua3M6OmNsZWFySG9zdEZ1bmN0aW9uU3R1YnMpOgorICAgICAg
ICAqIGppdC9KSVRTdHVicy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRh
YmxlOjpFdmFsRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpQ
cm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp+RnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om1hcmtDaGls
ZHJlbik6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjptYXJrQ2hpbGRyZW4pOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6Om1hcmtDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1
bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6RXhlY3V0
YWJsZUJhc2UpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6TmF0aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlZQ
dHJIYWNrRXhlY3V0YWJsZTo6VlB0ckhhY2tFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6U2Ny
aXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVj
dXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvbik6CisgICAg
ICAgICogcnVudGltZS9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6Cisg
ICAgICAgIChKU0M6OkhlYXA6Om1hcmtSb290cyk6CisgICAgICAgICogcnVudGltZS9IZWFwLmg6
CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Fj
dGl2YXRpb246OkpTQWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6bWFy
a0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAo
SlNDOjpKU0FjdGl2YXRpb246OkpTQWN0aXZhdGlvbkRhdGE6OkpTQWN0aXZhdGlvbkRhdGEpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246On5KU0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6
bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6
c3RvcmVWUHRycyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpnZXRIb3N0RnVuY3Rpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjptYXJrQ2hpbGRy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oOgorICAgICAgICAo
SlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpKU1N0YXRpY1Njb3BlT2JqZWN0RGF0YTo6SlNTdGF0
aWNTY29wZU9iamVjdERhdGEpOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpK
U1N0YXRpY1Njb3BlT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTWm9tYmllLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNab21iaWU6OmxlYWtlZFpvbWJpZVN0cnVjdHVyZSk6CisgICAgICAgICog
cnVudGltZS9KU1pvbWJpZS5oOgorICAgICAgICAoSlNDOjpKU1pvbWJpZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL01hcmtlZFNwYWNlLmg6CisKIDIwMTEtMDMtMDYgIFl1
dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDJkMjM1ZGZmMDg2N2I0YzA5ZmZlNDMwYjBiNmE1OWJhZjA1NzBjYjEuLmJhYzM4
ODBmMzg4YmQxZDcyOTU2ODZjZWM0YjEzZTMwMDlhMjA0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBD
b2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICB1bnNpZ25lZCBy
ZWdpc3RlckluZGV4ID0gbV9udW1WYXJzOwogICAgICAgICBzaXplX3QgaSA9IDA7CiAgICAgICAg
IGRvIHsKLSAgICAgICAgICAgIHByaW50ZigiICAgayV1ID0gJXNcbiIsIHJlZ2lzdGVySW5kZXgs
IHZhbHVlVG9Tb3VyY2VTdHJpbmcoZXhlYywgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5qc1ZhbHVl
KCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcHJpbnRmKCIgICBrJXUgPSAlc1xuIiwg
cmVnaXN0ZXJJbmRleCwgdmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCBtX2NvbnN0YW50UmVnaXN0
ZXJzW2ldLmdldCgpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgICsraTsKICAgICAgICAg
ICAgICsrcmVnaXN0ZXJJbmRleDsKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fY29uc3RhbnRSZWdp
c3RlcnMuc2l6ZSgpKTsKQEAgLTEzNjAsMTMgKzEzNjAsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXBTdGF0aXN0aWNzKCkKIH0KIAogQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBDb2RlVHlwZSBjb2RlVHlwZSwgSlNHbG9iYWxPYmplY3QgKmds
b2JhbE9iamVjdCwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVu
c2lnbmVkIHNvdXJjZU9mZnNldCwgU3ltYm9sVGFibGUqIHN5bVRhYiwgYm9vbCBpc0NvbnN0cnVj
dG9yKQotICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQorICAgIDogbV9nbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIG93bmVyRXhlY3V0YWJsZSwgZ2xvYmFs
T2JqZWN0KQogICAgICwgbV9oZWFwKCZtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXAp
CiAgICAgLCBtX251bUNhbGxlZVJlZ2lzdGVycygwKQogICAgICwgbV9udW1WYXJzKDApCiAgICAg
LCBtX251bVBhcmFtZXRlcnMoMCkKICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9y
KQotICAgICwgbV9vd25lckV4ZWN1dGFibGUob3duZXJFeGVjdXRhYmxlKQorICAgICwgbV9vd25l
ckV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIG93bmVyRXhlY3V0YWJsZSwg
b3duZXJFeGVjdXRhYmxlKQogICAgICwgbV9nbG9iYWxEYXRhKDApCiAjaWZuZGVmIE5ERUJVRwog
ICAgICwgbV9pbnN0cnVjdGlvbkNvdW50KDApCkBAIC0xNTI3LDE0ICsxNTI3LDI0IEBAIHZvaWQg
Q29kZUJsb2NrOjpyZWZTdHJ1Y3R1cmVzKEluc3RydWN0aW9uKiB2UEMpIGNvbnN0CiAgICAgQVNT
RVJUKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9p
ZCkgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5
X2lkKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRf
YnlfaWRfZ2VuZXJpYykgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNv
ZGUob3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKIH0KIAordm9pZCBFdmFsQ29kZUNhY2hlOjptYXJr
QWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQoreworICAgIEV2YWxDYWNoZU1hcDo6aXRl
cmF0b3IgZW5kID0gbV9jYWNoZU1hcC5lbmQoKTsKKyAgICBmb3IgKEV2YWxDYWNoZU1hcDo6aXRl
cmF0b3IgcHRyID0gbV9jYWNoZU1hcC5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikKKyAgICAg
ICAgbWFya1N0YWNrLmFwcGVuZCgmcHRyLT5zZWNvbmQpOworfQorCiB2b2lkIENvZGVCbG9jazo6
bWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1hcmtT
dGFjay5kZXByZWNhdGVkQXBwZW5kKCZtX2NvbnN0YW50UmVnaXN0ZXJzW2ldKTsKKyAgICBtYXJr
U3RhY2suYXBwZW5kKCZtX2dsb2JhbE9iamVjdCk7CisgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9v
d25lckV4ZWN1dGFibGUpOworICAgIGlmIChtX3JhcmVEYXRhKQorICAgICAgICBtX3JhcmVEYXRh
LT5tX2V2YWxDb2RlQ2FjaGUubWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgIG1hcmtTdGFj
ay5hcHBlbmRWYWx1ZXMobV9jb25zdGFudFJlZ2lzdGVycy5kYXRhKCksIG1fY29uc3RhbnRSZWdp
c3RlcnMuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25FeHBy
cy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9mdW5jdGlvbkV4cHJzW2ldLT5tYXJrQWdncmVnYXRl
KG1hcmtTdGFjayk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fZnVuY3Rpb25FeHByc1tp
XSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIG1fZnVuY3Rpb25EZWNsc1tpXS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2sp
OworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNbaV0pOwogfQogCiBI
YW5kbGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKaW5kZXggYmVmNDU2MTNiYmFjZjU4ZmU0YTdmZWMxMjQ4NTYwNTAwZDBiMGIxNi4uNjFhMjg4
MWEzM2M2Y2QyYzFlOTg4YjA3MzBjZGQ4Zjg3YWFjM2I4MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjQ4LDcgKzI0OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgQ29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgQ29kZVR5cGUsIEpTR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxT
b3VyY2VQcm92aWRlcj4sIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgU3ltYm9sVGFibGUqIHN5bWJv
bFRhYmxlLCBib29sIGlzQ29uc3RydWN0b3IpOwogCi0gICAgICAgIERlcHJlY2F0ZWRQdHI8SlNH
bG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OworICAgICAgICBXcml0ZUJhcnJpZXI8SlNHbG9i
YWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogICAgICAgICBIZWFwKiBtX2hlYXA7CiAKICAgICBw
dWJsaWM6CkBAIC0zNTksNyArMzU5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1
dGFibGVQb29sKiBleGVjdXRhYmxlUG9vbCgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVj
dXRhYmxlUG9vbCgpOyB9CiAjZW5kaWYKIAotICAgICAgICBTY3JpcHRFeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX293bmVyRXhlY3V0YWJsZTsgfQorICAgICAg
ICBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX293
bmVyRXhlY3V0YWJsZS5nZXQoKTsgfQogCiAgICAgICAgIHZvaWQgc2V0R2xvYmFsRGF0YShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEpIHsgbV9nbG9iYWxEYXRhID0gZ2xvYmFsRGF0YTsgfQogCkBA
IC00NzIsMTUgKzQ3MiwzMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllciYg
aWRlbnRpZmllcihpbnQgaW5kZXgpIHsgcmV0dXJuIG1faWRlbnRpZmllcnNbaW5kZXhdOyB9CiAK
ICAgICAgICAgc2l6ZV90IG51bWJlck9mQ29uc3RhbnRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVy
biBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKTsgfQotICAgICAgICB2b2lkIGFkZENvbnN0YW50
UmVnaXN0ZXIoY29uc3QgUmVnaXN0ZXImIHIpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnMu
YXBwZW5kKHIpOyB9Ci0gICAgICAgIFJlZ2lzdGVyJiBjb25zdGFudFJlZ2lzdGVyKGludCBpbmRl
eCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4XTsgfQorICAgICAgICB2b2lkIGFkZENvbnN0YW50KEpTVmFsdWUgdikKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5hcHBlbmQoV3JpdGVCYXJyaWVy
PFVua25vd24+KCkpOworICAgICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5sYXN0KCkuc2V0
KG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIG1fb3duZXJFeGVjdXRhYmxlLmdldCgpLCB2
KTsKKyAgICAgICAgfQorICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVn
aXN0ZXIoaW50IGluZGV4KSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9CiAgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBp
c0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4ID49
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBnZXRDb25zdGFudChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdp
c3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF0uanNWYWx1ZSgpOyB9Cisg
ICAgICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRDb25zdGFudChpbnQgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleF0uZ2V0KCk7IH0KIAotICAgICAgICB1bnNpZ25lZCBhZGRGdW5jdGlvbkRlY2woTm9u
TnVsbFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBuKSB7IHVuc2lnbmVkIHNpemUgPSBt
X2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOyBtX2Z1bmN0aW9uRGVjbHMuYXBwZW5kKG4pOyByZXR1cm4g
c2l6ZTsgfQorICAgICAgICB1bnNpZ25lZCBhZGRGdW5jdGlvbkRlY2woRnVuY3Rpb25FeGVjdXRh
YmxlKiBuKQorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBzaXplID0gbV9mdW5jdGlv
bkRlY2xzLnNpemUoKTsKKyAgICAgICAgICAgIG1fZnVuY3Rpb25EZWNscy5hcHBlbmQoV3JpdGVC
YXJyaWVyPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKSk7CisgICAgICAgICAgICBtX2Z1bmN0aW9uRGVj
bHMubGFzdCgpLnNldChtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBtX293bmVyRXhlY3V0
YWJsZS5nZXQoKSwgbik7CisgICAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgICAgfQogICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRGVjbChpbnQgaW5kZXgpIHsgcmV0dXJu
IG1fZnVuY3Rpb25EZWNsc1tpbmRleF0uZ2V0KCk7IH0KICAgICAgICAgaW50IG51bWJlck9mRnVu
Y3Rpb25EZWNscygpIHsgcmV0dXJuIG1fZnVuY3Rpb25EZWNscy5zaXplKCk7IH0KLSAgICAgICAg
dW5zaWduZWQgYWRkRnVuY3Rpb25FeHByKE5vbk51bGxQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0
YWJsZT4gbikgeyB1bnNpZ25lZCBzaXplID0gbV9mdW5jdGlvbkV4cHJzLnNpemUoKTsgbV9mdW5j
dGlvbkV4cHJzLmFwcGVuZChuKTsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgdW5zaWduZWQgYWRk
RnVuY3Rpb25FeHByKEZ1bmN0aW9uRXhlY3V0YWJsZSogbikKKyAgICAgICAgeworICAgICAgICAg
ICAgdW5zaWduZWQgc2l6ZSA9IG1fZnVuY3Rpb25FeHBycy5zaXplKCk7CisgICAgICAgICAgICBt
X2Z1bmN0aW9uRXhwcnMuYXBwZW5kKFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+KCkp
OworICAgICAgICAgICAgbV9mdW5jdGlvbkV4cHJzLmxhc3QoKS5zZXQobV9nbG9iYWxPYmplY3Qt
Pmdsb2JhbERhdGEoKSwgbV9vd25lckV4ZWN1dGFibGUuZ2V0KCksIG4pOworICAgICAgICAgICAg
cmV0dXJuIHNpemU7CisgICAgICAgIH0KICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbkV4cHIoaW50IGluZGV4KSB7IHJldHVybiBtX2Z1bmN0aW9uRXhwcnNbaW5kZXhdLmdldCgp
OyB9CiAKICAgICAgICAgdW5zaWduZWQgYWRkUmVnRXhwKFJlZ0V4cCogcikgeyBjcmVhdGVSYXJl
RGF0YUlmTmVjZXNzYXJ5KCk7IHVuc2lnbmVkIHNpemUgPSBtX3JhcmVEYXRhLT5tX3JlZ2V4cHMu
c2l6ZSgpOyBtX3JhcmVEYXRhLT5tX3JlZ2V4cHMuYXBwZW5kKHIpOyByZXR1cm4gc2l6ZTsgfQpA
QCAtNTM2LDcgKzU1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIG1fcmFy
ZURhdGEgPSBhZG9wdFB0cihuZXcgUmFyZURhdGEpOwogICAgICAgICB9CiAKLSAgICAgICAgU2Ny
aXB0RXhlY3V0YWJsZSogbV9vd25lckV4ZWN1dGFibGU7CisgICAgICAgIFdyaXRlQmFycmllcjxT
Y3JpcHRFeGVjdXRhYmxlPiBtX293bmVyRXhlY3V0YWJsZTsKICAgICAgICAgSlNHbG9iYWxEYXRh
KiBtX2dsb2JhbERhdGE7CiAKICAgICAgICAgVmVjdG9yPEluc3RydWN0aW9uPiBtX2luc3RydWN0
aW9uczsKQEAgLTU3NCw5ICs1OTAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8g
Q29uc3RhbnQgUG9vbAogICAgICAgICBWZWN0b3I8SWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsK
LSAgICAgICAgVmVjdG9yPFJlZ2lzdGVyPiBtX2NvbnN0YW50UmVnaXN0ZXJzOwotICAgICAgICBW
ZWN0b3I8UmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4gPiBtX2Z1bmN0aW9uRGVjbHM7Ci0gICAg
ICAgIFZlY3RvcjxSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiA+IG1fZnVuY3Rpb25FeHByczsK
KyAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KSwgUmVnaXN0ZXJfbXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJy
aWVyX1Vua25vd24pOworICAgICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9j
b25zdGFudFJlZ2lzdGVyczsKKyAgICAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxGdW5jdGlvbkV4
ZWN1dGFibGU+ID4gbV9mdW5jdGlvbkRlY2xzOworICAgICAgICBWZWN0b3I8V3JpdGVCYXJyaWVy
PEZ1bmN0aW9uRXhlY3V0YWJsZT4gPiBtX2Z1bmN0aW9uRXhwcnM7CiAKICAgICAgICAgU3ltYm9s
VGFibGUqIG1fc3ltYm9sVGFibGU7CiAKQEAgLTYxNywxMiArNjM0LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEdsb2JhbENvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIENvZGVUeXBlIGNvZGVUeXBlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
YXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNl
T2Zmc2V0KQogICAgICAgICAgICAgOiBDb2RlQmxvY2sob3duZXJFeGVjdXRhYmxlLCBjb2RlVHlw
ZSwgZ2xvYmFsT2JqZWN0LCBzb3VyY2VQcm92aWRlciwgc291cmNlT2Zmc2V0LCAmbV91bnNoYXJl
ZFN5bWJvbFRhYmxlLCBmYWxzZSkKICAgICAgICAgewotICAgICAgICAgICAgbV9oZWFwLT5jb2Rl
QmxvY2tzKCkuYWRkKHRoaXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgfkdsb2JhbENvZGVCbG9j
aygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1faGVhcC0+Y29kZUJsb2NrcygpLnJlbW92ZSh0
aGlzKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTY4MCw3ICs2OTEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+
Y29kZUJsb2NrKCk7CiAgICAgICAgIGlmIChjb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3Rlcklu
ZGV4KGluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBjb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0
ZXIoaW5kZXgpOworICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFJlZ2lzdGVy
Kj4oJmNvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihpbmRleCkpOwogICAgICAgICByZXR1cm4g
dGhpc1tpbmRleF07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V2YWxDb2RlQ2FjaGUuaAppbmRleCBlZGQ1NzVmZTZlMDI5MzRmZjA5NDA0ODkxNjFjMDk3NjA3
NzA0MTY3Li4zZTQ1MGIxMmMzZTQ1MGJkNWVjMDg3OTQyNDcwYjQ4Mjk2MmQ0YmVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKQEAgLTQxLDE0
ICs0MSwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIE1hcmtTdGFjazsKKwog
ICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUGFzc1JlZlB0
cjxFdmFsRXhlY3V0YWJsZT4gZ2V0KEV4ZWNTdGF0ZSogZXhlYywgYm9vbCBpblN0cmljdENvbnRl
eHQsIGNvbnN0IFVTdHJpbmcmIGV2YWxTb3VyY2UsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWlu
LCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGdldChF
eGVjU3RhdGUqIGV4ZWMsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyLCBib29sIGluU3RyaWN0Q29u
dGV4dCwgY29uc3QgVVN0cmluZyYgZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hh
aW4sIEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBSZWZQ
dHI8RXZhbEV4ZWN1dGFibGU+IGV2YWxFeGVjdXRhYmxlOworICAgICAgICAgICAgRXZhbEV4ZWN1
dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gMDsKIAogICAgICAgICAgICAgaWYgKCFpblN0cmljdENv
bnRleHQgJiYgZXZhbFNvdXJjZS5sZW5ndGgoKSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAm
JiAoKnNjb3BlQ2hhaW4tPmJlZ2luKCkpLT5pc1ZhcmlhYmxlT2JqZWN0KCkpCi0gICAgICAgICAg
ICAgICAgZXZhbEV4ZWN1dGFibGUgPSBtX2NhY2hlTWFwLmdldChldmFsU291cmNlLmltcGwoKSk7
CisgICAgICAgICAgICAgICAgZXZhbEV4ZWN1dGFibGUgPSBtX2NhY2hlTWFwLmdldChldmFsU291
cmNlLmltcGwoKSkuZ2V0KCk7CiAKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1dGFibGUpIHsK
ICAgICAgICAgICAgICAgICBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
ZXhlYywgbWFrZVNvdXJjZShldmFsU291cmNlKSwgaW5TdHJpY3RDb250ZXh0KTsKQEAgLTU3LDE5
ICs1OSwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICAgICAgICAgICAgICBpZiAoIWluU3RyaWN0Q29udGV4dCAmJiBldmFsU291cmNlLmxl
bmd0aCgpIDwgbWF4Q2FjaGVhYmxlU291cmNlTGVuZ3RoICYmICgqc2NvcGVDaGFpbi0+YmVnaW4o
KSktPmlzVmFyaWFibGVPYmplY3QoKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50
cmllcykKLSAgICAgICAgICAgICAgICAgICAgbV9jYWNoZU1hcC5zZXQoZXZhbFNvdXJjZS5pbXBs
KCksIGV2YWxFeGVjdXRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jYWNoZU1hcC5zZXQo
ZXZhbFNvdXJjZS5pbXBsKCksIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBvd25lciwgZXZhbEV4ZWN1dGFibGUpKTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgcmV0dXJuIGV2YWxFeGVjdXRhYmxlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJl
dHVybiBldmFsRXhlY3V0YWJsZTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNYXAuaXNFbXB0eSgpOyB9CiAKKyAgICAgICAgdm9pZCBt
YXJrQWdncmVnYXRlKE1hcmtTdGFjayYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCA9IDI1NjsKICAgICAgICAg
c3RhdGljIGNvbnN0IGludCBtYXhDYWNoZUVudHJpZXMgPSA2NDsKIAotICAgICAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBSZWZQdHI8RXZhbEV4ZWN1dGFibGU+ID4gRXZh
bENhY2hlTWFwOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBX
cml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+ID4gRXZhbENhY2hlTWFwOwogICAgICAgICBFdmFs
Q2FjaGVNYXAgbV9jYWNoZU1hcDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU2FtcGxpbmdUb29sLmgKaW5kZXggOWNhNTRkYThhMjlhMjZkNzc5ZmU5NDM2OGE4
ZTUyYjVkYzIyODczNC4uN2MwZmUzYWY3MTA3MDgwMTNiOGJiYmY5MTliZDY5NTE2N2ZmYmI1YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaApAQCAt
OTUsOCArOTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAK
ICAgICBzdHJ1Y3QgU2NyaXB0U2FtcGxlUmVjb3JkIHsKLSAgICAgICAgU2NyaXB0U2FtcGxlUmVj
b3JkKFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUpCi0gICAgICAgICAgICA6IG1fZXhlY3V0
YWJsZShleGVjdXRhYmxlKQorICAgICAgICBTY3JpcHRTYW1wbGVSZWNvcmQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlKQorICAgICAgICAgICAg
OiBtX2V4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZXhlY3V0YWJsZSkKICAgICAgICAgICAgICwgbV9j
b2RlQmxvY2soMCkKICAgICAgICAgICAgICwgbV9zYW1wbGVDb3VudCgwKQogICAgICAgICAgICAg
LCBtX29wY29kZVNhbXBsZUNvdW50KDApCkBAIC0xMTMsNyArMTEzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNhbXBsZShDb2RlQmxvY2sqLCBJbnN0cnVjdGlv
biopOwogCi0gICAgICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRhYmxlPiBtX2V4ZWN1dGFibGU7Cisg
ICAgICAgIEdsb2JhbDxTY3JpcHRFeGVjdXRhYmxlPiBtX2V4ZWN1dGFibGU7CiAgICAgICAgIENv
ZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgICAgIGludCBtX3NhbXBsZUNvdW50OwogICAgICAg
ICBpbnQgbV9vcGNvZGVTYW1wbGVDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMDhmNGJkNGY3
ZWI2YWZmODcxNmM3MWY1OTFjMjMxMmRlZWIxMjk0Yy4uNGZkMjE2Zjc0NjRiNzhmZjliNWFlMmM1
Yjg5YWM5ZDQwNTVjNDUzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTk0Myw3ICs5NDMsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ29uc3RhbnRWYWx1ZShKU1ZhbHVlIHYp
CiAgICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKICAgICAgICAgbV9jb25zdGFudFBvb2xSZWdpc3Rl
cnMuYXBwZW5kKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ICsgbV9uZXh0Q29uc3RhbnRPZmZz
ZXQpOwogICAgICAgICArK21fbmV4dENvbnN0YW50T2Zmc2V0OwotICAgICAgICBtX2NvZGVCbG9j
ay0+YWRkQ29uc3RhbnRSZWdpc3RlcihKU1ZhbHVlKHYpKTsKKyAgICAgICAgbV9jb2RlQmxvY2st
PmFkZENvbnN0YW50KEpTVmFsdWUodikpOwogICAgIH0gZWxzZQogICAgICAgICBpbmRleCA9IHJl
c3VsdC5maXJzdC0+c2Vjb25kOwogCkBAIC0xMDI2LDggKzEwMjYsOCBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lz
dGVySUQqIGRzdAogICAgICAgICBpZiAoc3JjMS0+aW5kZXgoKSA9PSBkc3RJbmRleAogICAgICAg
ICAgICAgJiYgc3JjMS0+aXNUZW1wb3JhcnkoKQogICAgICAgICAgICAgJiYgbV9jb2RlQmxvY2st
PmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNyYzItPmluZGV4KCkpCi0gICAgICAgICAgICAmJiBt
X2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihzcmMyLT5pbmRleCgpKS5qc1ZhbHVlKCkuaXNT
dHJpbmcoKSkgewotICAgICAgICAgICAgY29uc3QgVVN0cmluZyYgdmFsdWUgPSBhc1N0cmluZyht
X2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihzcmMyLT5pbmRleCgpKS5qc1ZhbHVlKCkpLT50
cnlHZXRWYWx1ZSgpOworICAgICAgICAgICAgJiYgbV9jb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0
ZXIoc3JjMi0+aW5kZXgoKSkuZ2V0KCkuaXNTdHJpbmcoKSkgeworICAgICAgICAgICAgY29uc3Qg
VVN0cmluZyYgdmFsdWUgPSBhc1N0cmluZyhtX2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3Rlcihz
cmMyLT5pbmRleCgpKS5nZXQoKSktPnRyeUdldFZhbHVlKCk7CiAgICAgICAgICAgICBpZiAodmFs
dWUgPT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgICAgICByZXdpbmRVbmFyeU9wKCk7CiAg
ICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9pc191bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IGIzODUxYzc2ZmUyZGRmZTc5ZGU5NWUxMGJhMDJmMmNiMDg4ZTkwYzkuLjVlNTU0NzA4NTUy
OWU3MDc0NmViNTM3YjIzNmZkM2U3MjVlZmU5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MywxMiAr
NDgzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBhZGRDb25zdGFu
dFZhbHVlKEpTVmFsdWUpOwogICAgICAgICB1bnNpZ25lZCBhZGRSZWdFeHAoUmVnRXhwKik7CiAK
LSAgICAgICAgUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IG1ha2VGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCisgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogbWFrZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y3JlYXRlKGV4ZWMsIGJvZHktPmlkZW50KCksIGJvZHktPnNvdXJjZSgpLCBib2R5LT51c2VzQXJn
dW1lbnRzKCksIGJvZHktPnBhcmFtZXRlcnMoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGJvZHkt
PmxpbmVObygpLCBib2R5LT5sYXN0TGluZSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIFBhc3NS
ZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBtYWtlRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KQorICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIG1ha2VGdW5jdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uQm9keU5v
ZGUqIGJvZHkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZShnbG9iYWxEYXRhLCBib2R5LT5pZGVudCgpLCBib2R5LT5zb3VyY2UoKSwgYm9k
eS0+dXNlc0FyZ3VtZW50cygpLCBib2R5LT5wYXJhbWV0ZXJzKCksIGJvZHktPmlzU3RyaWN0TW9k
ZSgpLCBib2R5LT5saW5lTm8oKSwgYm9keS0+bGFzdExpbmUoKSk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IGI5OTk0NDY2Y2Qw
ZTJjZDA0MzE2YmY5NGU3ZDlmOGNlMmZkMTc4MzUuLmQxYzkwYjBkMWVjMzI2YzU5MjhiMzQxOGNk
ZjE2MmIxMmJkYjYxNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcApAQCAtMTE4LDE0ICsxMTgsMTkgQEAgdm9pZCBEZWJ1Z2dlcjo6cmVjb21waWxlQWxs
SlNGdW5jdGlvbnMoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogSlNWYWx1ZSBldmFsdWF0ZUlu
R2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFVTdHJpbmcmIHNjcmlwdCwgSlNWYWx1ZSYgZXhjZXB0aW9u
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIENhbGxGcmFtZSogZ2xvYmFs
Q2FsbEZyYW1lID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7CiAKLSAgICBSZWZQdHI8
RXZhbEV4ZWN1dGFibGU+IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbENhbGxG
cmFtZSwgbWFrZVNvdXJjZShzY3JpcHQpLCBmYWxzZSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2
YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbENhbGxGcmFtZSwgbWFrZVNvdXJjZShz
Y3JpcHQpLCBmYWxzZSk7CisgICAgaWYgKCFldmFsKSB7CisgICAgICAgIGV4Y2VwdGlvbiA9IGds
b2JhbERhdGEuZXhjZXB0aW9uLmdldCgpOworICAgICAgICBnbG9iYWxEYXRhLmV4Y2VwdGlvbiA9
IEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAgICB9CiAgICAgSlNPYmpl
Y3QqIGVycm9yID0gZXZhbC0+Y29tcGlsZShnbG9iYWxDYWxsRnJhbWUsIGdsb2JhbENhbGxGcmFt
ZS0+c2NvcGVDaGFpbigpKTsKICAgICBpZiAoZXJyb3IpCiAgICAgICAgIHJldHVybiBlcnJvcjsK
IAotICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0
YSgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+ZXhlY3V0
ZShldmFsLmdldCgpLCBnbG9iYWxDYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgZ2xvYmFsQ2FsbEZy
YW1lLT5zY29wZUNoYWluKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2xvYmFsRGF0YS5pbnRl
cnByZXRlci0+ZXhlY3V0ZShldmFsLCBnbG9iYWxDYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgZ2xv
YmFsQ2FsbEZyYW1lLT5zY29wZUNoYWluKCkpOwogICAgIGlmIChnbG9iYWxEYXRhLmV4Y2VwdGlv
bikgewogICAgICAgICBleGNlcHRpb24gPSBnbG9iYWxEYXRhLmV4Y2VwdGlvbi5nZXQoKTsKICAg
ICAgICAgZ2xvYmFsRGF0YS5leGNlcHRpb24gPSBKU1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCBkNzc4
YmQ1NDdlNzYzN2YwYzljYTc2NzFlMTRlNDc2MjlhMDdkMmJmLi40ZDkwZWQ4MDgzYmIxOWI0Mzgz
ZDAyOWJlMGUyNzZhMGI5MzQ2MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTg3LDE0ICs4NywxOSBAQCBKU1Zh
bHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBVU3RyaW5nJiBzY3JpcHQsIEpT
VmFsdWUmIGV4Y2VwdGlvbikgYwogewogICAgIGlmICghbV9jYWxsRnJhbWUtPmNvZGVCbG9jaygp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgIAorICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IG1fY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7CisgICAgRXZhbEV4ZWN1dGFibGUq
IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKG1fY2FsbEZyYW1lLCBtYWtlU291cmNlKHNj
cmlwdCksIG1fY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGlm
IChnbG9iYWxEYXRhLmV4Y2VwdGlvbikgeworICAgICAgICBleGNlcHRpb24gPSBnbG9iYWxEYXRh
LmV4Y2VwdGlvbi5nZXQoKTsKKyAgICAgICAgZ2xvYmFsRGF0YS5leGNlcHRpb24gPSBKU1ZhbHVl
KCk7CisgICAgfQogCi0gICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBldmFsID0gRXZhbEV4ZWN1
dGFibGU6OmNyZWF0ZShtX2NhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3JpcHQpLCBtX2NhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICBKU09iamVjdCogZXJyb3IgPSBl
dmFsLT5jb21waWxlKG1fY2FsbEZyYW1lLCBtX2NhbGxGcmFtZS0+c2NvcGVDaGFpbigpKTsKICAg
ICBpZiAoZXJyb3IpCiAgICAgICAgIHJldHVybiBlcnJvcjsKIAotICAgIEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSA9IG1fY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7Ci0gICAgSlNWYWx1ZSByZXN1
bHQgPSBnbG9iYWxEYXRhLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwuZ2V0KCksIG1fY2FsbEZy
YW1lLCB0aGlzT2JqZWN0KCksIG1fY2FsbEZyYW1lLT5zY29wZUNoYWluKCkpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+ZXhlY3V0ZShldmFsLCBtX2NhbGxG
cmFtZSwgdGhpc09iamVjdCgpLCBtX2NhbGxGcmFtZS0+c2NvcGVDaGFpbigpKTsKICAgICBpZiAo
Z2xvYmFsRGF0YS5leGNlcHRpb24pIHsKICAgICAgICAgZXhjZXB0aW9uID0gZ2xvYmFsRGF0YS5l
eGNlcHRpb24uZ2V0KCk7CiAgICAgICAgIGdsb2JhbERhdGEuZXhjZXB0aW9uID0gSlNWYWx1ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKaW5kZXggYjlhOWM0MGJhN2JmNjdhZGE5NWJmNTFhNDQ4NTQ4MDFkMTE5MjhhYi4uYTBkOTVi
MWM5YTIwMzJhM2Q3YjMzMmI5YzZhZDQ5OWJjNmRiMzAyZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00MDksMTMgKzQwOSwx
MyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBJbnRlcnByZXRlcjo6Y2FsbEV2YWwoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIFJlZ2lzdGVyRmlsZSogcgogCiAgICAgU2NvcGVDaGFpbk5vZGUqIHNjb3Bl
Q2hhaW4gPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsKICAgICBKU1ZhbHVlIGV4Y2VwdGlvblZh
bHVlOwotICAgIFJlZlB0cjxFdmFsRXhlY3V0YWJsZT4gZXZhbCA9IGNvZGVCbG9jay0+ZXZhbENv
ZGVDYWNoZSgpLmdldChjYWxsRnJhbWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHByb2dy
YW1Tb3VyY2UsIHNjb3BlQ2hhaW4sIGV4Y2VwdGlvblZhbHVlKTsKKyAgICBFdmFsRXhlY3V0YWJs
ZSogZXZhbCA9IGNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldChjYWxsRnJhbWUsIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHByb2dy
YW1Tb3VyY2UsIHNjb3BlQ2hhaW4sIGV4Y2VwdGlvblZhbHVlKTsKIAogICAgIEFTU0VSVCghZXZh
bCA9PSBleGNlcHRpb25WYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFldmFsKSkKICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSk7CiAKLSAgICByZXR1
cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbC5nZXQo
KSwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT50aGlzUmVnaXN0
ZXIoKSkuanNWYWx1ZSgpLnRvVGhpc09iamVjdChjYWxsRnJhbWUpLCBjYWxsRnJhbWUtPnJlZ2lz
dGVycygpIC0gcmVnaXN0ZXJGaWxlLT5zdGFydCgpICsgcmVnaXN0ZXJPZmZzZXQsIHNjb3BlQ2hh
aW4pOworICAgIHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+ZXhl
Y3V0ZShldmFsLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dW5jaGVja2VkUihjb2RlQmxvY2stPnRo
aXNSZWdpc3RlcigpKS5qc1ZhbHVlKCkudG9UaGlzT2JqZWN0KGNhbGxGcmFtZSksIGNhbGxGcmFt
ZS0+cmVnaXN0ZXJzKCkgLSByZWdpc3RlckZpbGUtPnN0YXJ0KCkgKyByZWdpc3Rlck9mZnNldCwg
c2NvcGVDaGFpbik7CiB9CiAKIEludGVycHJldGVyOjpJbnRlcnByZXRlcihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZU1ldGhvZHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9k
cy5oCmluZGV4IDM5Y2E0YTVmMTlmMWE4YTU0OGQ1YTRkZGU0YjNlYTI1ZDE0OTIzOGQuLjcwMWMw
ZmUwOWY4ZWUxOWU1ZmQyMjM1ZmZiZWZhZDI5NjcxOTllNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCkBAIC03MDEsNyArNzAxLDcgQEAgQUxXQVlT
X0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQg
cmVnLCBpbnQgdlJlZykKIGlubGluZSB2b2lkIEpJVDo6ZW1pdExvYWREb3VibGUodW5zaWduZWQg
aW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSkKIHsKICAgICBpZiAobV9jb2RlQmxvY2stPmlzQ29u
c3RhbnRSZWdpc3RlckluZGV4KGluZGV4KSkgewotICAgICAgICBSZWdpc3RlciYgaW5Db25zdGFu
dFBvb2wgPSBtX2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihpbmRleCk7CisgICAgICAgIFdy
aXRlQmFycmllcjxVbmtub3duPiYgaW5Db25zdGFudFBvb2wgPSBtX2NvZGVCbG9jay0+Y29uc3Rh
bnRSZWdpc3RlcihpbmRleCk7CiAgICAgICAgIGxvYWREb3VibGUoJmluQ29uc3RhbnRQb29sLCB2
YWx1ZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGxvYWREb3VibGUoYWRkcmVzc0ZvcihpbmRleCks
IHZhbHVlKTsKQEAgLTcxMCw3ICs3MTAsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2FkRG91
YmxlKHVuc2lnbmVkIGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpCiBpbmxpbmUgdm9pZCBKSVQ6
OmVtaXRMb2FkSW50MzJUb0RvdWJsZSh1bnNpZ25lZCBpbmRleCwgRlBSZWdpc3RlcklEIHZhbHVl
KQogewogICAgIGlmIChtX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW5kZXgp
KSB7Ci0gICAgICAgIFJlZ2lzdGVyJiBpbkNvbnN0YW50UG9vbCA9IG1fY29kZUJsb2NrLT5jb25z
dGFudFJlZ2lzdGVyKGluZGV4KTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbkNv
bnN0YW50UG9vbCA9IG1fY29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKGluZGV4KTsKICAgICAg
ICAgY29udmVydEludDMyVG9Eb3VibGUoQWJzb2x1dGVBZGRyZXNzKCZpbkNvbnN0YW50UG9vbCks
IHZhbHVlKTsKICAgICB9IGVsc2UKICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoYWRkcmVz
c0ZvcihpbmRleCksIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAK
aW5kZXggOTViZjUyYzA3ZTI1MjE5OTg4ZmM5Njk2NjNjMzZmYjVhYjUyNTM4OS4uYmExOGYwYmRi
NWY1YTI2NWIyMTcwNGRhZjlhYTYyMzY5OTIzZmViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIK
KyNpbmNsdWRlICJHbG9iYWwuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FjdGl2
YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCkBAIC02NzksNiArNjgwLDcgQEAgX19hc20g
dm9pZCBjdGlPcFRocm93Tm90Q2F1Z2h0KCkKICNlbmRpZgogCiBKSVRUaHVua3M6OkpJVFRodW5r
cyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCisgICAgOiBtX2hvc3RGdW5jdGlvblN0dWJNYXAo
bmV3IEhvc3RGdW5jdGlvblN0dWJNYXApCiB7CiAgICAgaWYgKCFnbG9iYWxEYXRhLT5leGVjdXRh
YmxlQWxsb2NhdG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzQ4MywyMiArMzQ4
NSwyNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1bmtzOjpjdGlTdHViKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgVGh1bmtHZW5lcmF0bwogICAgIHJldHVybiBlbnRyeS5maXJzdC0+
c2Vjb25kOwogfQogCi1QYXNzUmVmUHRyPE5hdGl2ZUV4ZWN1dGFibGU+IEpJVFRodW5rczo6aG9z
dEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uKQorTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24pCiB7Ci0gICAg
c3RkOjpwYWlyPEhvc3RGdW5jdGlvblN0dWJNYXA6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IG1f
aG9zdEZ1bmN0aW9uU3R1Yk1hcC5hZGQoZnVuY3Rpb24sIDApOworICAgIHN0ZDo6cGFpcjxIb3N0
RnVuY3Rpb25TdHViTWFwOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBtX2hvc3RGdW5jdGlvblN0
dWJNYXAtPmFkZChmdW5jdGlvbiwgR2xvYmFsPE5hdGl2ZUV4ZWN1dGFibGU+KEdsb2JhbDxOYXRp
dmVFeGVjdXRhYmxlPjo6RW1wdHlWYWx1ZSkpOwogICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAg
ICAgIGVudHJ5LmZpcnN0LT5zZWNvbmQgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoSklUOjpj
b21waWxlQ1RJTmF0aXZlQ2FsbChnbG9iYWxEYXRhLCBtX2V4ZWN1dGFibGVQb29sLCBmdW5jdGlv
biksIGZ1bmN0aW9uLCBjdGlOYXRpdmVDb25zdHJ1Y3QoKSwgY2FsbEhvc3RGdW5jdGlvbkFzQ29u
c3RydWN0b3IpOwotICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25kOworICAgICAgICBlbnRy
eS5maXJzdC0+c2Vjb25kLnNldCgqZ2xvYmFsRGF0YSwgTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRl
KCpnbG9iYWxEYXRhLCBKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKGdsb2JhbERhdGEsIG1fZXhl
Y3V0YWJsZVBvb2wsIGZ1bmN0aW9uKSwgZnVuY3Rpb24sIGN0aU5hdGl2ZUNvbnN0cnVjdCgpLCBj
YWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcikpOworICAgIHJldHVybiBlbnRyeS5maXJzdC0+
c2Vjb25kLmdldCgpOwogfQogCi1QYXNzUmVmUHRyPE5hdGl2ZUV4ZWN1dGFibGU+IEpJVFRodW5r
czo6aG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IpCitOYXRpdmVFeGVjdXRhYmxl
KiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQogewotICAg
IHN0ZDo6cGFpcjxIb3N0RnVuY3Rpb25TdHViTWFwOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBt
X2hvc3RGdW5jdGlvblN0dWJNYXAuYWRkKGZ1bmN0aW9uLCAwKTsKKyAgICBzdGQ6OnBhaXI8SG9z
dEZ1bmN0aW9uU3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9ob3N0RnVuY3Rpb25T
dHViTWFwLT5hZGQoZnVuY3Rpb24sIEdsb2JhbDxOYXRpdmVFeGVjdXRhYmxlPihHbG9iYWw8TmF0
aXZlRXhlY3V0YWJsZT46OkVtcHR5VmFsdWUpKTsKICAgICBpZiAoZW50cnkuc2Vjb25kKSB7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlID0gZ2xvYmFsRGF0YS0+Y2FuVXNlSklU
KCkgPyBnZW5lcmF0b3IoZ2xvYmFsRGF0YSwgbV9leGVjdXRhYmxlUG9vbC5nZXQoKSkgOiBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoKTsKLSAgICAgICAgZW50cnkuZmlyc3QtPnNlY29uZCA9IE5hdGl2
ZUV4ZWN1dGFibGU6OmNyZWF0ZShjb2RlLCBmdW5jdGlvbiwgY3RpTmF0aXZlQ29uc3RydWN0KCks
IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKTsKKyAgICAgICAgZW50cnkuZmlyc3QtPnNl
Y29uZC5zZXQoKmdsb2JhbERhdGEsIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqZ2xvYmFsRGF0
YSwgY29kZSwgZnVuY3Rpb24sIGN0aU5hdGl2ZUNvbnN0cnVjdCgpLCBjYWxsSG9zdEZ1bmN0aW9u
QXNDb25zdHJ1Y3RvcikpOwogICAgIH0KLSAgICByZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZDsK
KyAgICByZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZC5nZXQoKTsKK30KKwordm9pZCBKSVRUaHVu
a3M6OmNsZWFySG9zdEZ1bmN0aW9uU3R1YnMoKQoreworICAgIG1faG9zdEZ1bmN0aW9uU3R1Yk1h
cC5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuaAppbmRleCA2NWY2YTU1YmM0MTY2ZjhjMmEyOTk0NTY2Zjg4MzZhYWQ4MDdiZWVm
Li5hZjZlMTNmMTY3YTU5YWVlOGMxNmUyNzczOTcwYTBiYjA4YjlhYTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5oCkBAIC0yNTQsNiArMjU0LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgZXh0ZXJuICJDIiB2b2lkIGN0aU9wVGhyb3dOb3RDYXVnaHQoKTsKICAgICBleHRlcm4g
IkMiIEVuY29kZWRKU1ZhbHVlIGN0aVRyYW1wb2xpbmUodm9pZCogY29kZSwgUmVnaXN0ZXJGaWxl
KiwgQ2FsbEZyYW1lKiwgdm9pZCogLyp1bnVzZWQxKi8sIFByb2ZpbGVyKiosIEpTR2xvYmFsRGF0
YSopOwogCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEdsb2JhbDsKKwogICAgIGNs
YXNzIEpJVFRodW5rcyB7CiAgICAgcHVibGljOgogICAgICAgICBKSVRUaHVua3MoSlNHbG9iYWxE
YXRhKik7CkBAIC0yNzMsMTMgKzI3NSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFRo
dW5rR2VuZXJhdG9yIGdlbmVyYXRvcik7CiAKLSAgICAgICAgUGFzc1JlZlB0cjxOYXRpdmVFeGVj
dXRhYmxlPiBob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZl
RnVuY3Rpb24gZnVuYyk7Ci0gICAgICAgIFBhc3NSZWZQdHI8TmF0aXZlRXhlY3V0YWJsZT4gaG9z
dEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmMsIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvcik7CisgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUq
IGhvc3RGdW5jdGlvblN0dWIoSlNHbG9iYWxEYXRhKiwgTmF0aXZlRnVuY3Rpb24pOworICAgICAg
ICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSosIE5hdGl2
ZUZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvcik7CisKKyAgICAgICAgdm9pZCBjbGVhckhvc3RGdW5j
dGlvblN0dWJzKCk7CisKICAgICBwcml2YXRlOgogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8VGh1
bmtHZW5lcmF0b3IsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cj4gQ1RJU3R1Yk1hcDsKICAgICAgICAg
Q1RJU3R1Yk1hcCBtX2N0aVN0dWJNYXA7Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxOYXRpdmVG
dW5jdGlvbiwgUmVmUHRyPE5hdGl2ZUV4ZWN1dGFibGU+ID4gSG9zdEZ1bmN0aW9uU3R1Yk1hcDsK
LSAgICAgICAgSG9zdEZ1bmN0aW9uU3R1Yk1hcCBtX2hvc3RGdW5jdGlvblN0dWJNYXA7CisgICAg
ICAgIHR5cGVkZWYgSGFzaE1hcDxOYXRpdmVGdW5jdGlvbiwgR2xvYmFsPE5hdGl2ZUV4ZWN1dGFi
bGU+ID4gSG9zdEZ1bmN0aW9uU3R1Yk1hcDsKKyAgICAgICAgT3duUHRyPEhvc3RGdW5jdGlvblN0
dWJNYXA+IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcDsKICAgICAgICAgUmVmUHRyPEV4ZWN1dGFibGVQ
b29sPiBtX2V4ZWN1dGFibGVQb29sOwogCiAgICAgICAgIFRyYW1wb2xpbmVTdHJ1Y3R1cmUgbV90
cmFtcG9saW5lU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmNwcAppbmRleCA4M2Q4YmQ4NWFkZDEyYTk0ZmQ4YzdiODExNDg3ZTU3MWI1YTkwNDJj
Li5iOGRjYjIxYjBmOTBmNDJmM2IwZGFlMzIyMjY5MWQ3YWViYzRkY2NlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMzksNyArMzksNyBAQCBD
b21wbGV0aW9uIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwogICAgIEFTU0VSVChleGVjLT5nbG9iYWxE
YXRhKCkuaWRlbnRpZmllclRhYmxlID09IHd0ZlRocmVhZERhdGEoKS5jdXJyZW50SWRlbnRpZmll
clRhYmxlKCkpOwogCi0gICAgUmVmUHRyPFByb2dyYW1FeGVjdXRhYmxlPiBwcm9ncmFtID0gUHJv
Z3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBzb3VyY2UpOworICAgIFByb2dyYW1FeGVjdXRh
YmxlKiBwcm9ncmFtID0gUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBzb3VyY2UpOwog
ICAgIEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPmNoZWNrU3ludGF4KGV4ZWMpOwogICAgIGlm
IChlcnJvcikKICAgICAgICAgcmV0dXJuIENvbXBsZXRpb24oVGhyb3csIGVycm9yKTsKQEAgLTUy
LDE0ICs1MiwxOSBAQCBDb21wbGV0aW9uIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVD
aGFpbk5vZGUqIHNjb3BlQ2hhaW4sIGNvbnN0IFNvdXJjZUNvZAogICAgIEpTTG9jayBsb2NrKGV4
ZWMpOwogICAgIEFTU0VSVChleGVjLT5nbG9iYWxEYXRhKCkuaWRlbnRpZmllclRhYmxlID09IHd0
ZlRocmVhZERhdGEoKS5jdXJyZW50SWRlbnRpZmllclRhYmxlKCkpOwogCi0gICAgUmVmUHRyPFBy
b2dyYW1FeGVjdXRhYmxlPiBwcm9ncmFtID0gUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShleGVj
LCBzb3VyY2UpOworICAgIFByb2dyYW1FeGVjdXRhYmxlKiBwcm9ncmFtID0gUHJvZ3JhbUV4ZWN1
dGFibGU6OmNyZWF0ZShleGVjLCBzb3VyY2UpOworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAg
ICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24uZ2V0KCk7
CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBKU1ZhbHVlKCk7CisgICAg
ICAgIHJldHVybiBDb21wbGV0aW9uKFRocm93LCBleGNlcHRpb24pOworICAgIH0KICAgICBKU09i
amVjdCogZXJyb3IgPSBwcm9ncmFtLT5jb21waWxlKGV4ZWMsIHNjb3BlQ2hhaW4pOwogICAgIGlm
IChlcnJvcikKICAgICAgICAgcmV0dXJuIENvbXBsZXRpb24oVGhyb3csIGVycm9yKTsKIAogICAg
IEpTT2JqZWN0KiB0aGlzT2JqID0gKCF0aGlzVmFsdWUgfHwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVk
T3JOdWxsKCkpID8gZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpIDogdGhpc1ZhbHVlLnRvT2Jq
ZWN0KGV4ZWMpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBleGVjLT5pbnRlcnByZXRlcigpLT5l
eGVjdXRlKHByb2dyYW0uZ2V0KCksIGV4ZWMsIHNjb3BlQ2hhaW4sIHRoaXNPYmopOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShwcm9ncmFtLCBleGVj
LCBzY29wZUNoYWluLCB0aGlzT2JqKTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkg
ewogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IGV4ZWMtPmV4Y2VwdGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA2MDdhMmMyZDc1
ZDYyNmU5ZTJhODk4OWMyZmI3MDRjMzcxM2MxNzM4Li5iMzkyZjI2Y2YxMWIzY2E5OWZmYTQ3ZWU4
ZWE1OTQwZDQyNTYxZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcApAQCAtNDQsNyArNDQsNyBAQCBWUHRySGFja0V4ZWN1dGFibGU6On5WUHRySGFj
a0V4ZWN1dGFibGUoKQogfQogCiBFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0
KQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCkK
KyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmV2YWxFeGVjdXRhYmxl
U3RydWN0dXJlLCBleGVjLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCkKIHsKIH0KIApAQCAtNTMs
NyArNTMsNyBAQCBFdmFsRXhlY3V0YWJsZTo6fkV2YWxFeGVjdXRhYmxlKCkKIH0KIAogUHJvZ3Jh
bUV4ZWN1dGFibGU6OlByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGZh
bHNlKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT5nbG9iYWxEYXRhKCkucHJvZ3JhbUV4
ZWN1dGFibGVTdHJ1Y3R1cmUsIGV4ZWMsIHNvdXJjZSwgZmFsc2UpCiB7CiB9CiAKQEAgLTYyLDcg
KzYyLDcgQEAgUHJvZ3JhbUV4ZWN1dGFibGU6On5Qcm9ncmFtRXhlY3V0YWJsZSgpCiB9CiAKIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQotICAgIDog
U2NyaXB0RXhlY3V0YWJsZShnbG9iYWxEYXRhLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCkKKyAg
ICA6IFNjcmlwdEV4ZWN1dGFibGUoZ2xvYmFsRGF0YS0+ZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0
dXJlLCBnbG9iYWxEYXRhLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCkKICAgICAsIG1fbnVtQ2Fw
dHVyZWRWYXJpYWJsZXMoMCkKICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKGZvcmNlVXNlc0Fy
Z3VtZW50cykKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQpAQCAtNzQsNyArNzQsNyBA
QCBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIGNvbnN0IElkZW50aWZpZQogfQogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0
aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9u
UGFyYW1ldGVycyogcGFyYW1ldGVycywgYm9vbCBpblN0cmljdENvbnRleHQsIGludCBmaXJzdExp
bmUsIGludCBsYXN0TGluZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYywgc291cmNlLCBp
blN0cmljdENvbnRleHQpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPmdsb2JhbERhdGEo
KS5mdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUsIGV4ZWMsIHNvdXJjZSwgaW5TdHJpY3RDb250
ZXh0KQogICAgICwgbV9udW1DYXB0dXJlZFZhcmlhYmxlcygwKQogICAgICwgbV9mb3JjZVVzZXNB
cmd1bWVudHMoZm9yY2VVc2VzQXJndW1lbnRzKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRl
cnMpCkBAIC04Nyw2ICs4NywxMiBAQCBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0
YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsCiAKIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6fkZ1bmN0aW9uRXhlY3V0YWJsZSgpCiB7CisjaWYgRU5BQkxFKEpJVF9PUFRJ
TUlaRV9DQUxMKQorICAgIGlmIChpc0dlbmVyYXRlZEZvckNhbGwoKSkKKyAgICAgICAgZ2VuZXJh
dGVkQnl0ZWNvZGVGb3JDYWxsKCkudW5saW5rQ2FsbGVycygpOworICAgIGlmIChpc0dlbmVyYXRl
ZEZvckNvbnN0cnVjdCgpKQorICAgICAgICBnZW5lcmF0ZWRCeXRlY29kZUZvckNvbnN0cnVjdCgp
LnVubGlua0NhbGxlcnMoKTsKKyNlbmRpZgogfQogCiBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6
OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluTm9kZSkKQEAgLTEyNyw2ICsxMzMsMTMgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpj
b21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGUKICAg
ICByZXR1cm4gMDsKIH0KIAordm9pZCBFdmFsRXhlY3V0YWJsZTo6bWFya0NoaWxkcmVuKE1hcmtT
dGFjayYgbWFya1N0YWNrKQoreworICAgIFNjcmlwdEV4ZWN1dGFibGU6Om1hcmtDaGlsZHJlbiht
YXJrU3RhY2spOworICAgIGlmIChtX2V2YWxDb2RlQmxvY2spCisgICAgICAgIG1fZXZhbENvZGVC
bG9jay0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworfQorCiBKU09iamVjdCogUHJvZ3JhbUV4
ZWN1dGFibGU6OmNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCog
ZXhjZXB0aW9uID0gMDsKQEAgLTE3OCw2ICsxOTEsMTMgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVj
dXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSog
c2MKICAgIHJldHVybiAwOwogfQogCit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjptYXJrQ2hpbGRy
ZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit7CisgICAgU2NyaXB0RXhlY3V0YWJsZTo6bWFya0No
aWxkcmVuKG1hcmtTdGFjayk7CisgICAgaWYgKG1fcHJvZ3JhbUNvZGVCbG9jaykKKyAgICAgICAg
bV9wcm9ncmFtQ29kZUJsb2NrLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7Cit9CisKIEpTT2Jq
ZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRl
KiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUpCiB7CiAgICAgSlNPYmplY3Qq
IGV4Y2VwdGlvbiA9IDA7CkBAIC0yNjgsOCArMjg4LDkgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2Nv
cGUKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1hcmtBZ2dy
ZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bWFy
a0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogeworICAgIFNjcmlwdEV4ZWN1dGFibGU6
Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwogICAgIGlmIChtX2NvZGVCbG9ja0ZvckNhbGwpCiAg
ICAgICAgIG1fY29kZUJsb2NrRm9yQ2FsbC0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwogICAg
IGlmIChtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCkKQEAgLTI4OCw3ICszMDksNyBAQCB2b2lkIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6ZGlzY2FyZENvZGUoKQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8
RnVuY3Rpb25FeGVjdXRhYmxlPiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKGNv
bnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgRXhlY1N0YXRlKiBleGVjLCBEZWJ1Z2dlciog
ZGVidWdnZXIsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNPYmplY3QqKiBleGNlcHRpb24p
CitGdW5jdGlvbkV4ZWN1dGFibGUqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUo
Y29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBFeGVjU3RhdGUqIGV4ZWMsIERlYnVnZ2Vy
KiBkZWJ1Z2dlciwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU09iamVjdCoqIGV4Y2VwdGlv
bikKIHsKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBl
eGVjLT5nbG9iYWxEYXRhKCkucGFyc2VyLT5wYXJzZTxQcm9ncmFtTm9kZT4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgZGVidWdnZXIsIGV4ZWMsIHNvdXJjZSwgMCwgSlNQYXJzZU5vcm1hbCwgZXhjZXB0
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCBi
MjU2NWEwMDEwM2E3MmI5NWRjNmM1NjU1YjczZDY0NDRhNTMwNzQyLi45Y2E5ZmNiNGYwZGIxZmMx
NmUzMjYzMTgxMTk1ODg0Yzg5ZTZhM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
c3RydWN0IEV4Y2VwdGlvbkluZm87CiAKLSAgICBjbGFzcyBFeGVjdXRhYmxlQmFzZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEV4ZWN1dGFibGVCYXNlPiB7CisgICAgY2xhc3MgRXhlY3V0YWJsZUJhc2Ug
OiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAgIHByb3Rl
Y3RlZDoKQEAgLTUyLDIxICs1MiwyMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQgPSAtMTsKICAgICAKICAgICBw
dWJsaWM6Ci0gICAgICAgIEV4ZWN1dGFibGVCYXNlKGludCBudW1QYXJhbWV0ZXJzKQotICAgICAg
ICAgICAgOiBtX251bVBhcmFtZXRlcnNGb3JDYWxsKG51bVBhcmFtZXRlcnMpCisgICAgICAgIEV4
ZWN1dGFibGVCYXNlKFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGludCBudW1QYXJh
bWV0ZXJzKQorICAgICAgICAgICAgOiBKU0NlbGwoc3RydWN0dXJlLnJlbGVhc2VSZWYoKSkKKyAg
ICAgICAgICAgICwgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbChudW1QYXJhbWV0ZXJzKQogICAgICAg
ICAgICAgLCBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3QobnVtUGFyYW1ldGVycykKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB+RXhlY3V0YWJsZUJhc2UoKSB7fQot
CiAgICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25zdAogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQoKG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwgPT0gTlVNX1BBUkFNRVRFUlNfSVNf
SE9TVCkgPT0gKG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9PSBOVU1fUEFSQU1FVEVSU19J
U19IT1NUKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCA9PSBO
VU1fUEFSQU1FVEVSU19JU19IT1NUOwogICAgICAgICB9CiAKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90bykgeyByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUocHJvdG8sIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOyB9CisKICAgICBwcm90ZWN0ZWQ6CisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IDA7CiAgICAgICAgIGlu
dCBtX251bVBhcmFtZXRlcnNGb3JDYWxsOwogICAgICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9y
Q29uc3RydWN0OwogCkBAIC05NiwxNiArOTgsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogI2lmIEVOQUJMRShKSVQpCi0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE5hdGl2ZUV4ZWN1dGFibGU+IGNyZWF0ZShNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgY2FsbFRodW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKKyAg
ICAgICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0
aW9uIGNvbnN0cnVjdG9yKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIWNhbGxUaHVuaykK
LSAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5hdGl2ZUV4ZWN1dGFibGUoSklU
Q29kZSgpLCBmdW5jdGlvbiwgSklUQ29kZSgpLCBjb25zdHJ1Y3RvcikpOwotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBOYXRpdmVFeGVjdXRhYmxlKEpJVENvZGU6Okhvc3RGdW5jdGlv
bihjYWxsVGh1bmspLCBmdW5jdGlvbiwgSklUQ29kZTo6SG9zdEZ1bmN0aW9uKGNvbnN0cnVjdFRo
dW5rKSwgY29uc3RydWN0b3IpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICgmZ2xvYmFs
RGF0YSkgTmF0aXZlRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBKSVRDb2RlKCksIGZ1bmN0aW9uLCBK
SVRDb2RlKCksIGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKCZnbG9iYWxE
YXRhKSBOYXRpdmVFeGVjdXRhYmxlKGdsb2JhbERhdGEsIEpJVENvZGU6Okhvc3RGdW5jdGlvbihj
YWxsVGh1bmspLCBmdW5jdGlvbiwgSklUQ29kZTo6SG9zdEZ1bmN0aW9uKGNvbnN0cnVjdFRodW5r
KSwgY29uc3RydWN0b3IpOwogICAgICAgICB9CiAjZWxzZQotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxOYXRpdmVFeGVjdXRhYmxlPiBjcmVhdGUoTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5h
dGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQorICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJs
ZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rp
b24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE5hdGl2ZUV4ZWN1dGFibGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9y
KSk7CisgICAgICAgICAgICByZXR1cm4gbmV3ICgmZ2xvYmFsRGF0YSkgTmF0aXZlRXhlY3V0YWJs
ZShnbG9iYWxEYXRhLCBmdW5jdGlvbiwgY29uc3RydWN0b3IpOwogICAgICAgICB9CiAjZW5kaWYK
IApAQCAtMTE1LDggKzExNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoSklUKQotICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKEpJVENvZGUgY2FsbFRodW5r
LCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSklUQ29kZSBjb25zdHJ1Y3RUaHVuaywgTmF0aXZl
RnVuY3Rpb24gY29uc3RydWN0b3IpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKE5VTV9Q
QVJBTUVURVJTX0lTX0hPU1QpCisgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKSVRDb2RlIGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24s
IEpJVENvZGUgY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQorICAg
ICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShnbG9iYWxEYXRhLmV4ZWN1dGFibGVTdHJ1Y3R1cmUs
IE5VTV9QQVJBTUVURVJTX0lTX0hPU1QpCiAgICAgICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rp
b24pCiAgICAgICAgICAgICAsIG1fY29uc3RydWN0b3IoY29uc3RydWN0b3IpCiAgICAgICAgIHsK
QEAgLTEyNiw4ICsxMjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1faml0Q29k
ZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrID0gY29uc3RydWN0VGh1bmsuYWRkcmVzc0ZvckNh
bGwoKTsKICAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgTmF0aXZlRXhlY3V0YWJsZShOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCi0gICAgICAgICAg
ICA6IEV4ZWN1dGFibGVCYXNlKE5VTV9QQVJBTUVURVJTX0lTX0hPU1QpCisgICAgICAgIE5hdGl2
ZUV4ZWN1dGFibGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5j
dGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCisgICAgICAgICAgICA6IEV4ZWN1dGFi
bGVCYXNlKGdsb2JhbERhdGEuZXhlY3V0YWJsZVN0cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNfSVNf
SE9TVCkKICAgICAgICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKICAgICAgICAgICAgICwg
bV9jb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikKICAgICAgICAgewpAQCAtMTQyLDggKzE0NCw4IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVlB0ckhhY2tFeGVjdXRhYmxlIDogcHVibGlj
IEV4ZWN1dGFibGVCYXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFZQdHJIYWNrRXhlY3V0YWJs
ZSgpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKE5VTV9QQVJBTUVURVJTX0lTX0hPU1Qp
CisgICAgICAgIFZQdHJIYWNrRXhlY3V0YWJsZShQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0
dXJlKQorICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVU
RVJTX0lTX0hPU1QpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC0xNTIsOCArMTU0LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlIDogcHVibGljIEV4
ZWN1dGFibGVCYXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdEV4ZWN1dGFibGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJ
blN0cmljdENvbnRleHQpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKE5VTV9QQVJBTUVU
RVJTX05PVF9DT01QSUxFRCkKKyAgICAgICAgU2NyaXB0RXhlY3V0YWJsZShQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCkKKyAgICAgICAgICAgIDogRXhl
Y3V0YWJsZUJhc2Uoc3RydWN0dXJlLCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQpCiAgICAg
ICAgICAgICAsIG1fc291cmNlKHNvdXJjZSkKICAgICAgICAgICAgICwgbV9mZWF0dXJlcyhpc0lu
U3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogMCkKICAgICAgICAgewpAQCAtMTY2
LDggKzE2OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAgICAgICAgIH0KIAotICAgICAg
ICBTY3JpcHRFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0KQotICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFz
ZShOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQpCisgICAgICAgIFNjcmlwdEV4ZWN1dGFibGUo
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQpCisgICAgICAgICAgICA6
IEV4ZWN1dGFibGVCYXNlKHN0cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEKQog
ICAgICAgICAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgICAgICAsIG1fZmVhdHVyZXMo
aXNJblN0cmljdENvbnRleHQgPyBTdHJpY3RNb2RlRmVhdHVyZSA6IDApCiAgICAgICAgIHsKQEAg
LTIyNyw3ICsyMjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqbV9l
dmFsQ29kZUJsb2NrOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZh
bEV4ZWN1dGFibGU+IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEV2YWxF
eGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQpKTsgfQorICAgICAgICBz
dGF0aWMgRXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCkgeyByZXR1cm4gbmV3IChleGVj
KSBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0KTsgfQogCiAj
aWYgRU5BQkxFKEpJVCkKICAgICAgICAgSklUQ29kZSYgZ2VuZXJhdGVkSklUQ29kZSgpCkBAIC0y
MzUsMjAgKzIzNywyMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBnZW5l
cmF0ZWRKSVRDb2RlRm9yQ2FsbCgpOwogICAgICAgICB9CiAjZW5kaWYKKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90bykgeyBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUocHJvdG8sIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOyB9CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNN
YXJrQ2hpbGRyZW4gfCBTY3JpcHRFeGVjdXRhYmxlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAgICAg
RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wpOwogCiAg
ICAgICAgIEpTT2JqZWN0KiBjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5v
ZGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKIAog
ICAgICAgICBPd25QdHI8RXZhbENvZGVCbG9jaz4gbV9ldmFsQ29kZUJsb2NrOwogICAgIH07CiAK
ICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2dyYW1FeGVjdXRhYmxl
PiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAg
ICAgIHN0YXRpYyBQcm9ncmFtRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFByb2dyYW1FeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSkpOworICAgICAgICAgICAg
cmV0dXJuIG5ldyAoZXhlYykgUHJvZ3JhbUV4ZWN1dGFibGUoZXhlYywgc291cmNlKTsKICAgICAg
ICAgfQogCiAgICAgICAgIH5Qcm9ncmFtRXhlY3V0YWJsZSgpOwpAQCAtMjc2LDExICsyODEsMTUg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZv
ckNhbGwoKTsKICAgICAgICAgfQogI2VuZGlmCisgICAgICAgIAorICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvKSB7IHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZShwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgMCk7IH0KIAogICAgIHByaXZhdGU6CisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc01hcmtD
aGlsZHJlbiB8IFNjcmlwdEV4ZWN1dGFibGU6OlN0cnVjdHVyZUZsYWdzOwogICAgICAgICBQcm9n
cmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAg
SlNPYmplY3QqIGNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogCiAgICAgICAg
IE93blB0cjxQcm9ncmFtQ29kZUJsb2NrPiBtX3Byb2dyYW1Db2RlQmxvY2s7CiAgICAgfTsKQEAg
LTI4OCwxNCArMjk3LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhl
Y3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9uRXhl
Y3V0YWJsZT4gY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rp
b25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBpbnQgZmly
c3RMaW5lLCBpbnQgbGFzdExpbmUpCisgICAgICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1l
dGVycyogcGFyYW1ldGVycywgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgaW50IGZpcnN0TGluZSwg
aW50IGxhc3RMaW5lKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50
cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpKTsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBu
YW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENv
bnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKKyAg
ICAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJz
LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnVuY3Rpb25FeGVjdXRh
YmxlKGdsb2JhbERhdGEsIG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0
ZXJzLCBpc0luU3RyaWN0Q29udGV4dCwgZmlyc3RMaW5lLCBsYXN0TGluZSkpOworICAgICAgICAg
ICAgcmV0dXJuIG5ldyAoZ2xvYmFsRGF0YSkgRnVuY3Rpb25FeGVjdXRhYmxlKGdsb2JhbERhdGEs
IG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJzLCBpc0luU3RyaWN0
Q29udGV4dCwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CiAgICAgICAgIH0KIAogICAgICAgICB+RnVu
Y3Rpb25FeGVjdXRhYmxlKCk7CkBAIC0zNjMsOCArMzcyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3ltYm9sVGFibGU7IH0KIAogICAgICAgICB2b2lkIGRpc2NhcmRDb2RlKCk7Ci0gICAgICAgIHZv
aWQgbWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
RnVuY3Rpb25FeGVjdXRhYmxlPiBmcm9tR2xvYmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiwgRXhl
Y1N0YXRlKiwgRGVidWdnZXIqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqKiBleGNlcHRp
b24pOworICAgICAgICB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKKyAgICAgICAgc3Rh
dGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmllciYs
IEV4ZWNTdGF0ZSosIERlYnVnZ2VyKiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiogZXhj
ZXB0aW9uKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1
Y3R1cmUoSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUocHJvdG8sIFR5
cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQs
IDApOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUoSlNHbG9i
YWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wg
Zm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBib29sLCBpbnQgZmlyc3RM
aW5lLCBpbnQgbGFzdExpbmUpOwpAQCAtMzcyLDcgKzM4Miw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSosIFNj
b3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ29uc3RydWN0SW50
ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKLQorICAgICAgICAKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzTWFya0NoaWxk
cmVuIHwgU2NyaXB0RXhlY3V0YWJsZTo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIHVuc2lnbmVk
IG1fbnVtQ2FwdHVyZWRWYXJpYWJsZXMgOiAzMTsKICAgICAgICAgYm9vbCBtX2ZvcmNlVXNlc0Fy
Z3VtZW50cyA6IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZTY0MjU5NDg3OTEwM2RjNDg2ODNhZjY0MjQ2
MDEwZGU1NDE1ZGY2Ni4uNTczYmQ1YjRlODlkYzIzNDQ5NmM1YjRmMDA3NDBkOTg1NDI5NjUzMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaQog
ICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
OwogICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShwcm9ncmFtLCBzb3VyY2VVUkws
IGxpbmVOdW1iZXIpOwogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSAwOwotICAgIFJlZlB0cjxG
dW5jdGlvbkV4ZWN1dGFibGU+IGZ1bmN0aW9uID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xv
YmFsQ29kZShmdW5jdGlvbk5hbWUsIGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+
ZGVidWdnZXIoKSwgc291cmNlLCAmZXhjZXB0aW9uKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShmdW5jdGlvbk5h
bWUsIGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSwgc291cmNl
LCAmZXhjZXB0aW9uKTsKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChleGNl
cHRpb24pOwogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBleGNlcHRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcAppbmRleCBjNTJiY2ZlNmM2YzQxN2VjMjFm
NDU1NGM1ZmMyYWRmNTFiYjRhZmE2Li4xNzgxNTgyNDk4ZGMxOGViZDIzODU2NDhiMzNjMDY1MGJj
MGU4MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcApAQCAtNzUsNiAr
NzUsMTAgQEAgdm9pZCBIZWFwOjpkZXN0cm95KCkKICAgICAvLyAoYW5kIHRodXMgdGhlIGdsb2Jh
bCBkYXRhKSBiZWZvcmUgb3RoZXIgb2JqZWN0cyB0aGF0IG1heSB1c2UgdGhlIGdsb2JhbCBkYXRh
LgogICAgIFJlZlB0cjxKU0dsb2JhbERhdGE+IHByb3RlY3QobV9nbG9iYWxEYXRhKTsKIAorI2lm
IEVOQUJMRShKSVQpCisgICAgbV9nbG9iYWxEYXRhLT5qaXRTdHVicy0+Y2xlYXJIb3N0RnVuY3Rp
b25TdHVicygpOworI2VuZGlmCisKICAgICBkZWxldGUgbV9tYXJrTGlzdFNldDsKICAgICBtX21h
cmtMaXN0U2V0ID0gMDsKICAgICBtX21hcmtlZFNwYWNlLmNsZWFyTWFya3MoKTsKQEAgLTIyMSwx
MSArMjI1LDYgQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogICAgIC8vIE1hcmsgdGVtcG9yYXJ5
IHZlY3RvciBmb3IgQXJyYXkgc29ydGluZwogICAgIG1hcmtUZW1wU29ydFZlY3RvcnMobWFya1N0
YWNrKTsKICAgICBtYXJrU3RhY2suZHJhaW4oKTsKLSAgICAKLSAgICBIYXNoU2V0PEdsb2JhbENv
ZGVCbG9jayo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NvZGVCbG9ja3MuZW5kKCk7Ci0gICAg
Zm9yIChIYXNoU2V0PEdsb2JhbENvZGVCbG9jayo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fY29k
ZUJsb2Nrcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5tYXJrQWdn
cmVnYXRlKG1hcmtTdGFjayk7Ci0gICAgbWFya1N0YWNrLmRyYWluKCk7CiAKICAgICAvLyBNYXJr
IG1pc2MuIG90aGVyIHJvb3RzLgogICAgIGlmIChtX21hcmtMaXN0U2V0ICYmIG1fbWFya0xpc3RT
ZXQtPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hl
YXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuaAppbmRleCBlYjhhZjcw
Y2UzNzUyMTU2MWY4MTNlMDZmZWRmZTA4MDg3ZGFjN2MxLi40MDgwOGZkNmQ0MTlkMTliZTA0ZWUx
YzhmMWZhYjA3MTNiZjk3NDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5oCkBA
IC05Miw5ICs5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgcHVzaFRlbXBT
b3J0VmVjdG9yKFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXI+Kik7CiAgICAgICAgIHZvaWQgcG9wVGVt
cFNvcnRWZWN0b3IoVmVjdG9yPFZhbHVlU3RyaW5nUGFpcj4qKTsKLSAgICAgICAgCi0gICAgICAg
IEhhc2hTZXQ8R2xvYmFsQ29kZUJsb2NrKj4mIGNvZGVCbG9ja3MoKSB7IHJldHVybiBtX2NvZGVC
bG9ja3M7IH0KLQorICAgIAogICAgICAgICBIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4m
IG1hcmtMaXN0U2V0KCkgeyBpZiAoIW1fbWFya0xpc3RTZXQpIG1fbWFya0xpc3RTZXQgPSBuZXcg
SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+OyByZXR1cm4gKm1fbWFya0xpc3RTZXQ7IH0K
ICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVh
Y2goRnVuY3RvciYpOwpAQCAtMTI0LDcgKzEyMiw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIFByb3RlY3RDb3VudFNldCBtX3Byb3RlY3RlZFZhbHVlczsKICAgICAgICAgVmVjdG9yPFZl
Y3RvcjxWYWx1ZVN0cmluZ1BhaXI+KiA+IG1fdGVtcFNvcnRpbmdWZWN0b3JzOwotICAgICAgICBI
YXNoU2V0PEdsb2JhbENvZGVCbG9jayo+IG1fY29kZUJsb2NrczsKIAogICAgICAgICBIYXNoU2V0
PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4qIG1fbWFya0xpc3RTZXQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IGViOWM3YzE1OTA1Yzcw
OGFiMDI4Njg2NTI2MDMwZjE5MGNmN2I3NTQuLjk5MTBjMDlmYjA4MzZjMGQwN2MxYjhhNmQ5NGZj
ZWExNGVmYzUxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3Rp
dmF0aW9uLmNwcApAQCAtMzksOCArMzksOCBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpT
QWN0aXZhdGlvbik7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0FjdGl2YXRpb246OnNfaW5mbyA9IHsg
IkpTQWN0aXZhdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAgfTsKIAotSlNBY3RpdmF0aW9uOjpK
U0FjdGl2YXRpb24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIE5vbk51bGxQYXNzUmVmUHRyPEZ1bmN0
aW9uRXhlY3V0YWJsZT4gZnVuY3Rpb25FeGVjdXRhYmxlKQotICAgIDogQmFzZShjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKS5hY3RpdmF0aW9uU3RydWN0dXJlLCBuZXcgSlNBY3RpdmF0aW9uRGF0YShm
dW5jdGlvbkV4ZWN1dGFibGUsIGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKQorSlNBY3RpdmF0aW9u
OjpKU0FjdGl2YXRpb24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FeGVjdXRhYmxlKQorICAgIDogQmFzZShjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5h
Y3RpdmF0aW9uU3RydWN0dXJlLCBuZXcgSlNBY3RpdmF0aW9uRGF0YShjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKSwgdGhpcywgZnVuY3Rpb25FeGVjdXRhYmxlLCBjYWxsRnJhbWUtPnJlZ2lzdGVycygp
KSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQpAQCAtNTMsNiArNTMsNyBA
QCBKU0FjdGl2YXRpb246On5KU0FjdGl2YXRpb24oKQogdm9pZCBKU0FjdGl2YXRpb246Om1hcmtD
aGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBCYXNlOjptYXJrQ2hpbGRyZW4o
bWFya1N0YWNrKTsKKyAgICBtYXJrU3RhY2suYXBwZW5kKCZkKCktPmZ1bmN0aW9uRXhlY3V0YWJs
ZSk7CiAKICAgICAvLyBObyBuZWVkIHRvIG1hcmsgb3VyIHJlZ2lzdGVycyBpZiB0aGV5J3JlIHN0
aWxsIGluIHRoZSBSZWdpc3RlckZpbGUuCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdp
c3RlckFycmF5ID0gZCgpLT5yZWdpc3RlckFycmF5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAppbmRleCA2ZTA0MDQxNjI4MGNiN2QwNzRlMmY3
YWJhMDBkZDk0MjY4ZjUzMmYyLi4yNzAwNGE5MzRiZmE2NDIzNmQwODkwODFkOWViNGRiZDk3Y2Nm
Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaApA
QCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0FjdGl2YXRpb24g
OiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgIHR5cGVkZWYgSlNWYXJpYWJsZU9i
amVjdCBCYXNlOwogICAgIHB1YmxpYzoKLSAgICAgICAgSlNBY3RpdmF0aW9uKENhbGxGcmFtZSos
IE5vbk51bGxQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4pOworICAgICAgICBKU0FjdGl2
YXRpb24oQ2FsbEZyYW1lKiwgRnVuY3Rpb25FeGVjdXRhYmxlKik7CiAgICAgICAgIHZpcnR1YWwg
fkpTQWN0aXZhdGlvbigpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFy
a1N0YWNrJik7CkBAIC03Myw5ICs3Myw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgc3RydWN0IEpTQWN0aXZhdGlvbkRhdGEgOiBwdWJsaWMgSlNWYXJpYWJsZU9i
amVjdERhdGEgewotICAgICAgICAgICAgSlNBY3RpdmF0aW9uRGF0YShOb25OdWxsUGFzc1JlZlB0
cjxGdW5jdGlvbkV4ZWN1dGFibGU+IF9mdW5jdGlvbkV4ZWN1dGFibGUsIFJlZ2lzdGVyKiByZWdp
c3RlcnMpCisgICAgICAgICAgICBKU0FjdGl2YXRpb25EYXRhKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uLCBGdW5jdGlvbkV4ZWN1dGFibGUqIF9mdW5j
dGlvbkV4ZWN1dGFibGUsIFJlZ2lzdGVyKiByZWdpc3RlcnMpCiAgICAgICAgICAgICAgICAgOiBK
U1ZhcmlhYmxlT2JqZWN0RGF0YShfZnVuY3Rpb25FeGVjdXRhYmxlLT5zeW1ib2xUYWJsZSgpLCBy
ZWdpc3RlcnMpCi0gICAgICAgICAgICAgICAgLCBmdW5jdGlvbkV4ZWN1dGFibGUoX2Z1bmN0aW9u
RXhlY3V0YWJsZSkKKyAgICAgICAgICAgICAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZShnbG9iYWxE
YXRhLCBhY3RpdmF0aW9uLCBfZnVuY3Rpb25FeGVjdXRhYmxlKQogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gbWFudWFsbHkgcmVmIGFuZCBkZXJlZiB0aGUgc3lt
Ym9sIHRhYmxlIGFzIEpTVmFyaWFibGVPYmplY3REYXRhCiAgICAgICAgICAgICAgICAgLy8gZG9l
c24ndCBrbm93IGFib3V0IFNoYXJlZFN5bWJvbFRhYmxlCkBAIC04Niw3ICs4Niw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZFN5bWJvbFRhYmxl
Kj4oc3ltYm9sVGFibGUpLT5kZXJlZigpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBS
ZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBmdW5jdGlvbkV4ZWN1dGFibGU7CisgICAgICAgICAg
ICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPiBmdW5jdGlvbkV4ZWN1dGFibGU7CiAg
ICAgICAgIH07CiAKICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVy
JiwgUHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmlu
ZGV4IDczMTNkNTI1MjQ1MzY0MjVjNDQxOWUwNjRjNjIyYmM4MWYxMGRhNjQuLjU0ZWUwMThiNzcy
NTY1NDg1Y2U0OTgyZDZhMDc5YWEwOTA3MmVmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShKU0NlbGwpOwogI2VuZGlmCiAKKyAgICAgICAgZnJpZW5kIGNs
YXNzIEV4ZWN1dGFibGVCYXNlOwogICAgICAgICBmcmllbmQgY2xhc3MgR2V0dGVyU2V0dGVyOwog
ICAgICAgICBmcmllbmQgY2xhc3MgSGVhcDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMmFkZTQ0
MTVkYzhhMjM1MzQxZmEwYjI3OTIxMjhjNTg4MDg2MTgwNi4uOGU3NzQ3YjkxYTBjNWY4NDc0ZWQy
MGU0MDk1YTJhNWI5MDVmMWRjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKQEAgLTU2LDE2ICs1NiwxNiBAQCBib29sIEpTRnVuY3Rpb246OmlzSG9z
dEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3QKICAgICByZXR1cm4gaXNIb3N0RnVuY3Rpb24oKTsK
IH0KIAotSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSkKK0pTRnVuY3Rpb246OkpTRnVuY3Rpb24oTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmUsIFZQdHJIYWNrRXhlY3V0YWJsZSogZXhlY3V0YWJsZSkKICAgICA6
IEJhc2Uoc3RydWN0dXJlKQotICAgICwgbV9leGVjdXRhYmxlKGFkb3B0UmVmKG5ldyBWUHRySGFj
a0V4ZWN1dGFibGUoKSkpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBt
X2V4ZWN1dGFibGUuc2V0V2l0aG91dFdyaXRlQmFycmllcihleGVjdXRhYmxlKTsKIH0KIAotSlNG
dW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBpbnQgbGVu
Z3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBQYXNzUmVmUHRyPE5hdGl2ZUV4ZWN1dGFibGU+
IHRodW5rKQorSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0
dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVjdXRhYmxl
KiB0aHVuaykKICAgICA6IEJhc2UoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2V4
ZWN1dGFibGUodGh1bmspCisgICAgLCBtX2V4ZWN1dGFibGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCB0aHVuaykKICAgICAsIG1fc2NvcGVDaGFpbihleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpKQogewogICAgIEFTU0VSVChpbmhlcml0
cygmc19pbmZvKSk7CkBAIC03NSw3ICs3NSw3IEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzCiAK
IEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgaW50
IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKICAg
ICA6IEJhc2UoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2V4ZWN1dGFibGUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbihmdW5jKSkKKyAgICAsIG1fZXhlY3V0YWJs
ZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVu
Y3Rpb24oZnVuYykpCiAgICAgLCBtX3Njb3BlQ2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSkKIHsKICAgICBBU1NFUlQoaW5oZXJp
dHMoJnNfaW5mbykpOwpAQCAtODMsOSArODMsOSBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhcwog
ICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
KTsKIH0KIAotSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQ
YXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4gZXhlY3V0YWJsZSwgU2NvcGVDaGFpbk5vZGUq
IHNjb3BlQ2hhaW5Ob2RlKQorSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hh
aW5Ob2RlKQogICAgIDogQmFzZShzY29wZUNoYWluTm9kZS0+Z2xvYmFsT2JqZWN0LmdldCgpLCBz
Y29wZUNoYWluTm9kZS0+Z2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKQotICAgICwg
bV9leGVjdXRhYmxlKGV4ZWN1dGFibGUpCisgICAgLCBtX2V4ZWN1dGFibGUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBleGVjdXRhYmxlKQogICAgICwgbV9zY29wZUNoYWluKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpcywgc2NvcGVDaGFpbk5vZGUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZz
X2luZm8pKTsKQEAgLTk2LDE5ICs5Niw2IEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IGV4CiBKU0Z1
bmN0aW9uOjp+SlNGdW5jdGlvbigpCiB7CiAgICAgQVNTRVJUKHZwdHIoKSA9PSBKU0dsb2JhbERh
dGE6OmpzRnVuY3Rpb25WUHRyKTsKLQotICAgIC8vIEpJVCBjb2RlIGZvciBvdGhlciBmdW5jdGlv
bnMgbWF5IGhhdmUgaGFkIGNhbGxzIGxpbmtlZCBkaXJlY3RseSB0byB0aGUgY29kZSBmb3IgdGhp
cyBmdW5jdGlvbjsgdGhlc2UgbGlua3MKLSAgICAvLyBhcmUgYmFzZWQgb24gYSBjaGVjayBmb3Ig
dGhlIHRoaXMgcG9pbnRlciB2YWx1ZSBmb3IgdGhpcyBKU0Z1bmN0aW9uIC0gd2hpY2ggd2lsbCBu
byBsb25nZXIgYmUgdmFsaWQgb25jZQotICAgIC8vIHRoaXMgbWVtb3J5IGlzIGZyZWVkIGFuZCBt
YXkgYmUgcmV1c2VkIChwb3RlbnRpYWxseSBmb3IgYW5vdGhlciwgZGlmZmVyZW50IEpTRnVuY3Rp
b24pLgotICAgIGlmICghaXNIb3N0RnVuY3Rpb24oKSkgewotI2lmIEVOQUJMRShKSVRfT1BUSU1J
WkVfQ0FMTCkKLSAgICAgICAgQVNTRVJUKG1fZXhlY3V0YWJsZSk7Ci0gICAgICAgIGlmIChqc0V4
ZWN1dGFibGUoKS0+aXNHZW5lcmF0ZWRGb3JDYWxsKCkpCi0gICAgICAgICAgICBqc0V4ZWN1dGFi
bGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3JDYWxsKCkudW5saW5rQ2FsbGVycygpOwotICAgICAg
ICBpZiAoanNFeGVjdXRhYmxlKCktPmlzR2VuZXJhdGVkRm9yQ29uc3RydWN0KCkpCi0gICAgICAg
ICAgICBqc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3JDb25zdHJ1Y3QoKS51bmxp
bmtDYWxsZXJzKCk7Ci0jZW5kaWYKLSAgICB9CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBTdHJp
Y3RNb2RlQ2FsbGVyQWNjZXNzRXJyb3IgPSAiQ2Fubm90IGFjY2VzcyBjYWxsZXIgcHJvcGVydHkg
b2YgYSBzdHJpY3QgbW9kZSBmdW5jdGlvbiI7CkBAIC0xNDgsOCArMTM1LDggQEAgY29uc3QgVVN0
cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQog
dm9pZCBKU0Z1bmN0aW9uOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAg
ICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgbWFya1N0YWNrLmFwcGVuZCgm
bV9leGVjdXRhYmxlKTsKICAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAganNF
eGVjdXRhYmxlKCktPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKICAgICAgICAgbWFya1N0YWNr
LmFwcGVuZCgmbV9zY29wZUNoYWluKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggMDg5ZjQyZTJjMjNiOTgxMTIyZTIyYzIyYTIwYjgz
YzBmMDE2M2JjMS4uNmJjM2U4M2QxMDMwNmI4YmI0ZmNmMGE0NWUwZmRhN2RkYmUxYzQwYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMzQsNiArMzQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKKyAgICBjbGFzcyBW
UHRySGFja0V4ZWN1dGFibGU7CiAKICAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCkBAIC00NSw4ICs0Niw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHVibGljOgogICAgICAgICBKU0Z1bmN0aW9uKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwg
aW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKLSAgICAgICAg
SlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4sIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBQYXNzUmVmUHRyPE5h
dGl2ZUV4ZWN1dGFibGU+KTsKLSAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBOb25OdWxs
UGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+LCBTY29wZUNoYWluTm9kZSopOworICAgICAg
ICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUV4ZWN1
dGFibGUqKTsKKyAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIH5KU0Z1bmN0aW9uKCk7CiAK
ICAgICAgICAgY29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsKQEAgLTg2LDcgKzg3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0
YW5jZSB8IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMg
fCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU0Z1
bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOworICAgICAgICBKU0Z1bmN0aW9u
KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFZQdHJIYWNrRXhlY3V0YWJsZSopOwogCiAg
ICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIApAQCAtMTAyLDcg
KzEwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsZXJH
ZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBz
dGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYpOwogCi0gICAgICAgIFJlZlB0cjxFeGVjdXRhYmxlQmFzZT4gbV9leGVjdXRhYmxl
OworICAgICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fZXhlY3V0YWJsZTsKICAg
ICAgICAgV3JpdGVCYXJyaWVyPFNjb3BlQ2hhaW5Ob2RlPiBtX3Njb3BlQ2hhaW47CiAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKaW5k
ZXggZTI1MDQwYzM3OWIyZjJhYTM0MjY3ZDMxZjY1Mjk1OGRlMWEwZTRjYy4uYWY0NDRkNTc5YWM0
MjVmZjFiMTRkMDEyOWQ4NzljZTBkNDU5NTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC0xMDcsNyArMTA3LDkgQEAgdm9pZCBKU0ds
b2JhbERhdGE6OnN0b3JlVlB0cnMoKQogICAgIGpzU3RyaW5nLT5+SlNDZWxsKCk7CiAKICAgICBD
T01QSUxFX0FTU0VSVChzaXplb2YoSlNGdW5jdGlvbikgPD0gc2l6ZW9mKHN0b3JhZ2UpLCBzaXpl
b2ZfSlNGdW5jdGlvbl9tdXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdlKTsKLSAgICBKU0NlbGwqIGpz
RnVuY3Rpb24gPSBuZXcgKHN0b3JhZ2UpIEpTRnVuY3Rpb24oSlNGdW5jdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKGpzTnVsbCgpKSk7CisgICAgY2hhciBleGVjdXRhYmxlU3RvcmFnZVtzaXplb2YoVlB0
ckhhY2tFeGVjdXRhYmxlKV07CisgICAgVlB0ckhhY2tFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
bmV3IChleGVjdXRhYmxlU3RvcmFnZSkgVlB0ckhhY2tFeGVjdXRhYmxlKFZQdHJIYWNrRXhlY3V0
YWJsZTo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSk7CisgICAgSlNDZWxsKiBqc0Z1bmN0aW9u
ID0gbmV3IChzdG9yYWdlKSBKU0Z1bmN0aW9uKEpTRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShq
c051bGwoKSksIGV4ZWN1dGFibGUpOwogICAgIEpTR2xvYmFsRGF0YTo6anNGdW5jdGlvblZQdHIg
PSBqc0Z1bmN0aW9uLT52cHRyKCk7CiAgICAganNGdW5jdGlvbi0+fkpTQ2VsbCgpOwogfQpAQCAt
MTM1LDYgKzEzNywxMCBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlw
ZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZAogICAgICwgZ2V0dGVyU2V0
dGVyU3RydWN0dXJlKEdldHRlclNldHRlcjo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAg
ICAsIGFwaVdyYXBwZXJTdHJ1Y3R1cmUoSlNBUElWYWx1ZVdyYXBwZXI6OmNyZWF0ZVN0cnVjdHVy
ZShqc051bGwoKSkpCiAgICAgLCBzY29wZUNoYWluTm9kZVN0cnVjdHVyZShTY29wZUNoYWluTm9k
ZTo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKKyAgICAsIGV4ZWN1dGFibGVTdHJ1Y3R1cmUo
RXhlY3V0YWJsZUJhc2U6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCisgICAgLCBldmFsRXhl
Y3V0YWJsZVN0cnVjdHVyZShFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgp
KSkKKyAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlKFByb2dyYW1FeGVjdXRhYmxlOjpj
cmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKQorICAgICwgZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0
dXJlKEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAs
IGR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlKEpTQ2VsbDo6Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUo
KSkKICAgICAsIGlkZW50aWZpZXJUYWJsZShnbG9iYWxEYXRhVHlwZSA9PSBEZWZhdWx0ID8gd3Rm
VGhyZWFkRGF0YSgpLmN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSA6IGNyZWF0ZUlkZW50aWZpZXJU
YWJsZSgpKQogICAgICwgcHJvcGVydHlOYW1lcyhuZXcgQ29tbW9uSWRlbnRpZmllcnModGhpcykp
CkBAIC0yODIsMTggKzI4OCwxOCBAQCBKU0dsb2JhbERhdGEqJiBKU0dsb2JhbERhdGE6OnNoYXJl
ZEluc3RhbmNlSW50ZXJuYWwoKQogfQogCiAjaWYgRU5BQkxFKEpJVCkKLVBhc3NSZWZQdHI8TmF0
aXZlRXhlY3V0YWJsZT4gSlNHbG9iYWxEYXRhOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24pCitOYXRpdmVFeGVjdXRhYmxlKiBKU0dsb2JhbERhdGE6OmdldEhvc3RGdW5j
dGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICByZXR1cm4gaml0U3R1YnMtPmhv
c3RGdW5jdGlvblN0dWIodGhpcywgZnVuY3Rpb24pOwogfQotUGFzc1JlZlB0cjxOYXRpdmVFeGVj
dXRhYmxlPiBKU0dsb2JhbERhdGE6OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5j
dGlvbiwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQorTmF0aXZlRXhlY3V0YWJsZSogSlNHbG9i
YWxEYXRhOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFRodW5rR2Vu
ZXJhdG9yIGdlbmVyYXRvcikKIHsKICAgICByZXR1cm4gaml0U3R1YnMtPmhvc3RGdW5jdGlvblN0
dWIodGhpcywgZnVuY3Rpb24sIGdlbmVyYXRvcik7CiB9CiAjZWxzZQotUGFzc1JlZlB0cjxOYXRp
dmVFeGVjdXRhYmxlPiBKU0dsb2JhbERhdGE6OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbikKK05hdGl2ZUV4ZWN1dGFibGUqIEpTR2xvYmFsRGF0YTo6Z2V0SG9zdEZ1bmN0
aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKQogewotICAgIHJldHVybiBOYXRpdmVFeGVjdXRh
YmxlOjpjcmVhdGUoZnVuY3Rpb24sIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKTsKKyAg
ICByZXR1cm4gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp0aGlzLCBmdW5jdGlvbiwgY2FsbEhv
c3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKaW5kZXggZWUzZTA2NzE2MTllZTM4MmEzMzgy
MjNjY2M2N2ZmOThiZDRlMWM5YS4uNTUzMjMzZGY3M2FhODZkYTZkMTk2MDcwZTMzMjg0YzJhMGIw
ZjZlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgK
QEAgLTE1NSw2ICsxNTUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IGdldHRlclNldHRlclN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4g
YXBpV3JhcHBlclN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc2NvcGVDaGFp
bk5vZGVTdHJ1Y3R1cmU7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGV4ZWN1dGFibGVTdHJ1
Y3R1cmU7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGV2YWxFeGVjdXRhYmxlU3RydWN0dXJl
OworICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBwcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZTsK
KyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlOwog
ICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZTsKIAog
ICAgICAgICBzdGF0aWMgdm9pZCBzdG9yZVZQdHJzKCk7CkBAIC0xOTksOSArMjAzLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBqaXRTdHVicy0+Y3Rp
U3R1Yih0aGlzLCBnZW5lcmF0b3IpOwogICAgICAgICB9Ci0gICAgICAgIFBhc3NSZWZQdHI8TmF0
aXZlRXhlY3V0YWJsZT4gZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBUaHVua0dlbmVy
YXRvcik7CisgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVG
dW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IpOwogI2VuZGlmCi0gICAgICAgIFBhc3NSZWZQdHI8TmF0
aXZlRXhlY3V0YWJsZT4gZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAg
TmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uKTsKIAogICAg
ICAgICBUaW1lb3V0Q2hlY2tlciB0aW1lb3V0Q2hlY2tlcjsKICAgICAgICAgVGVybWluYXRvciB0
ZXJtaW5hdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IGRlMTMwMGFkNTQyMDlkOTEyMTc4Yjg3
ZmI0NWM3YzYzMDMzMmNiZDYuLmYwZGE3NzM3Y2NjNjFiNjZhNzI5N2Y2ZmM4MzgyZDVjZjBiM2Q2
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTQ0OSwxMiArNDQ5LDEyIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwoRXhlY1N0YXRlKiBleGVjKQogICAgIGlm
IChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwYXJzZWRPYmplY3QpOwogCi0gICAgUmVmUHRy
PEV2YWxFeGVjdXRhYmxlPiBldmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtl
U291cmNlKHMpLCBmYWxzZSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2UocyksIGZhbHNlKTsKICAgICBKU09iamVjdCog
ZXJyb3IgPSBldmFsLT5jb21waWxlKGV4ZWMsIHN0YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
dW53cmFwcGVkT2JqZWN0KS0+Z2xvYmFsU2NvcGVDaGFpbigpKTsKICAgICBpZiAoZXJyb3IpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IpOwogCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShleGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlKGV2YWwuZ2V0KCksIGV4
ZWMsIHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4odW53cmFwcGVkT2Jq
ZWN0KS0+Z2xvYmFsU2NvcGVDaGFpbigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShl
eGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlKGV2YWwsIGV4ZWMsIHRoaXNPYmplY3QsIHN0YXRp
Y19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4odW53cmFwcGVkT2JqZWN0KS0+Z2xvYmFsU2NvcGVDaGFp
bigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1BhcnNl
SW50KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAppbmRleCBmYjhhOTY3OGJiOTA0MTU4NjAyMzFhNGZhNDhjNTg0ZmZiYzJlNDQzLi44
MGZhMTA1ODI2YzBjYzE4MzQwYjU5MTc4ZTAzZWVhYTFhNjBmNTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTT2JqZWN0KTsKIEFTU0VSVF9D
TEFTU19GSVRTX0lOX0NFTEwoSlNOb25GaW5hbE9iamVjdCk7Ci1BU1NFUlRfQ0xBU1NfRklMTFNf
Q0VMTChKU0ZpbmFsT2JqZWN0KTsKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNGaW5hbE9i
amVjdCk7CiAKIGNvbnN0IGNoYXIqIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
ciA9ICJBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5j
cHAKaW5kZXggNzI3YWMyODEyZWYxMDZjY2JjZTA2MWVkYmRkY2UwOTZmZTZhYWYwMC4uMGNhYmFl
ZjYwYzZlYWNhM2NjNjY3Yjc4MWNlZWVhYTQ5MWM4MDE1OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKQEAgLTM0LDcg
KzM0LDcgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1N0YXRpY1Njb3BlT2JqZWN0KTsK
IHZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0
YWNrKQogewogICAgIEpTVmFyaWFibGVPYmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwot
ICAgIG1hcmtTdGFjay5kZXByZWNhdGVkQXBwZW5kKCZkKCktPnJlZ2lzdGVyU3RvcmUpOworICAg
IG1hcmtTdGFjay5hcHBlbmQoJmQoKS0+cmVnaXN0ZXJTdG9yZSk7CiB9CiAKIEpTT2JqZWN0KiBK
U1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVj
dC5oCmluZGV4IGIzYzA2OTUzMDkyNTZjMDFmYzkxNTE0YTUxMTJiMzdmOGZhMTJlZDYuLmM2YWM3
NWFhMjNiYmJmODU3ZjU4ZTc3ZmYyZGU4MDAyNzU5ZWQ4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKQEAgLTM1LDE4ICsz
NSwxOCBAQCBuYW1lc3BhY2UgSlNDewogICAgICAgICB1c2luZyBKU1ZhcmlhYmxlT2JqZWN0OjpK
U1ZhcmlhYmxlT2JqZWN0RGF0YTsKICAgICAgICAgc3RydWN0IEpTU3RhdGljU2NvcGVPYmplY3RE
YXRhIDogcHVibGljIEpTVmFyaWFibGVPYmplY3REYXRhIHsKICAgICAgICAgICAgIEpTU3RhdGlj
U2NvcGVPYmplY3REYXRhKCkKLSAgICAgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3REYXRh
KCZzeW1ib2xUYWJsZSwgJnJlZ2lzdGVyU3RvcmUgKyAxKQorICAgICAgICAgICAgICAgIDogSlNW
YXJpYWJsZU9iamVjdERhdGEoJnN5bWJvbFRhYmxlLCByZWludGVycHJldF9jYXN0PFJlZ2lzdGVy
Kj4oJnJlZ2lzdGVyU3RvcmUgKyAxKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIFN5bWJvbFRhYmxlIHN5bWJvbFRhYmxlOwotICAgICAgICAgICAgUmVnaXN0ZXIg
cmVnaXN0ZXJTdG9yZTsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiByZWdpc3Rl
clN0b3JlOwogICAgICAgICB9OwogICAgICAgICAKICAgICBwdWJsaWM6CiAgICAgICAgIEpTU3Rh
dGljU2NvcGVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKICAgICAgICAgICAgIDogSlNWYXJp
YWJsZU9iamVjdChleGVjLT5nbG9iYWxEYXRhKCkuc3RhdGljU2NvcGVTdHJ1Y3R1cmUsIG5ldyBK
U1N0YXRpY1Njb3BlT2JqZWN0RGF0YSgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBkKCktPnJl
Z2lzdGVyU3RvcmUgPSB2YWx1ZTsKKyAgICAgICAgICAgIGQoKS0+cmVnaXN0ZXJTdG9yZS5zZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJs
ZSgpLmFkZChpZGVudC5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoLTEsIGF0dHJpYnV0ZXMpKTsK
ICAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIH5KU1N0YXRpY1Njb3BlT2JqZWN0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAKaW5kZXggYzBjNWYxMTYwYjNj
NWQ1ZjZkOGU4MWM1MGJhYjU4ZWQ5YTVlMjRiYS4uODZkY2M3MjZiMjU3MDdhY2U5ZmEwZGU2MDEy
NzliZmM5YjRkODk5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNab21iaWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmll
LmNwcApAQCAtMzgsNyArMzgsNyBAQCBTdHJ1Y3R1cmUqIEpTWm9tYmllOjpsZWFrZWRab21iaWVT
dHJ1Y3R1cmUoKSB7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMDsKICAgICBp
ZiAoIXN0cnVjdHVyZSkgewogICAgICAgICBTdHJ1Y3R1cmU6OnN0YXJ0SWdub3JpbmdMZWFrcygp
OwotICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNyZWF0ZShqc051bGwoKSwgVHlwZUlu
Zm8oVW5zcGVjaWZpZWRUeXBlKSwgMCwgJmluZm8pLmxlYWtSZWYoKTsKKyAgICAgICAgc3RydWN0
dXJlID0gU3RydWN0dXJlOjpjcmVhdGUoanNOdWxsKCksIFR5cGVJbmZvKFVuc3BlY2lmaWVkVHlw
ZSksIDAsICZzX2luZm8pLmxlYWtSZWYoKTsKICAgICAgICAgU3RydWN0dXJlOjpzdG9wSWdub3Jp
bmdMZWFrcygpOwogICAgIH0KICAgICByZXR1cm4gc3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTWm9tYmllLmgKaW5kZXggNWZlNmI2ZGEyYjNkMjAxNjNlNGYyYmQwZmIz
NmE5N2JlMWY2MDQwZi4uMzcxNDQ2ZjI1ZjZhODAyNWM0ODUxOGU0MTI5ZTRhYmMyNjZkYTA2NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oCkBAIC02OCw3ICs2OCw3
IEBAIHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0
ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgT3ZlcnJpZGVzTWFy
a0NoaWxkcmVuKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CiAKICAgICBz
dGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXJrZWRTcGFjZS5oCmluZGV4IDJlODg4ODc4MWQyODVhYzE5ZDAzYzgxODlhZmRhNTE2
NTg0YmUxOGMuLjA1NmZhNzMxMzZlNDExMDk3YWJiMTBhMTE0NmQxODNjOWFkM2UwMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuaApAQCAtNDgsNyArNDgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFya2Vk
U3BhY2UpOwogICAgIHB1YmxpYzoKICAgICAgICAgLy8gQ3VycmVudGx5IHB1YmxpYyBmb3IgdXNl
IGluIGFzc2VydGlvbnMuCi0gICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4Q2VsbFNpemUg
PSA2NDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDZWxsU2l6ZSA9IDI1NjsKIAog
ICAgICAgICBzdGF0aWMgSGVhcCogaGVhcChKU0NlbGwqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85061</attachid>
            <date>2011-03-08 11:09:39 -0800</date>
            <delta_ts>2011-03-08 11:55:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55910-20110308110938.patch</filename>
            <type>text/plain</type>
            <size>71279</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA0NzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDk0
NGM1ZGY4NjA5YjBiZGM2MjkyNGU0MDY3YTg4MDE3YWRkYjM4ZGUuLjYwNmY2N2JkZjVhZjVjOTJj
OGRiZWRjMmEyMWUzNWQwYjJmODYwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyNCBAQAorMjAxMS0wMy0wNyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgQ29k
ZUJsb2NrIEdDIHdyaXRlIGJhcnJpZXIgc2FmZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU5MTAKKworICAgICAgICBJbiBvcmRlciB0byBtYWtlIENv
ZGVCbG9jayBXcml0ZUJhcnJpZXIgc2FmZSBpdCB3YXMgbmVjZXNzYXJ5CisgICAgICAgIHRvIG1h
a2UgaXQgaGF2ZSBhIHNpbmdsZSBHQyBvd25lciwgYW5kIGZvciB0aGF0IHJlYXNvbiBJIGhhdmUK
KyAgICAgICAgbWFkZSBFeGVjdXRhYmxlQmFzZSBhIEdDIGFsbG9jYXRlZCBvYmplY3QuICBUaGlz
IHJlcXVpcmVkCisgICAgICAgIHVwZGF0aW5nIHRoZWlyIGNyZWF0aW9uIHJvdXRpbmVzIGFzIHdl
bGwgYXMgYWxsIHNpdGVzIHRoYXQgaG9sZAorICAgICAgICBhIHJlZmVyZW5jZSB0byB0aGVtLiAg
R0Mgb2JqZWN0cyB0aGF0IGhlbGQgRXhlY3V0YWJsZSdzIGhhdmUgYmVlbgorICAgICAgICBjb252
ZXJ0ZWQgdG8gV3JpdGVCYXJyaWVycywgYW5kIGFsbCBvdGhlciBzaXRlcyBub3cgdXNlIEdsb2Jh
bDw+LgorCisgICAgICAgIEFzIGFuIGFkZGVkIGJlbmVmaXQgdGhpcyBnZXRzIHJpZCBvZiBKU0ds
b2JhbERhdGEncyBsaXN0IG9mCisgICAgICAgIEdsb2JhbENvZGVCbG9ja3MuCisKKyAgICAgICAg
UGVyZiB0ZXN0aW5nIHNob3dzIGEgMC41JSBwcm9ncmVzc2lvbiBvbiB2OCwgdnMuIGEgMC4zJSBy
ZWdyZXNzaW9uCisgICAgICAgIG9uIFN1blNwaWRlci4gIEdpdmVuIG5vbmUgb2YgdGhlIHRlc3Rz
IHRoYXQgc2hvdyByZWdyZXNzaW9ucworICAgICAgICBkZW1vbnN0cmF0ZSBhIHJlZ3Jlc3Npb24g
b24gdGhlaXIgb3duLCBhbmQgc2FtcGxpbmcgc2hvd3MgdXAgbm90aGluZy4KKyAgICAgICAgSSBz
dXNwZWN0IHdlJ3JlIGp1c3QgZ2V0dGluZyBvbmUgb3IgdHdvIGFkZGl0aW9uYWwgZ2MgcGFzc2Vz
IGF0CisgICAgICAgIHRoZSBlbmQgb2YgdGhlIHJ1bi4KKworICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6
bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWFya0FnZ3JlZ2F0ZSk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6b3duZXJFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRDb25zdGFu
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y29uc3RhbnRSZWdpc3Rlcik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6Z2V0Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmFkZEZ1bmN0aW9uRGVjbCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnVuY3Rpb25F
eHByKToKKyAgICAgICAgKEpTQzo6R2xvYmFsQ29kZUJsb2NrOjpHbG9iYWxDb2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnIpOgorICAgICAgICAqIGJ5dGVjb2RlL0V2YWxDb2Rl
Q2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0KToKKyAgICAgICAgKiBi
eXRlY29kZS9TYW1wbGluZ1Rvb2wuaDoKKyAgICAgICAgKEpTQzo6U2NyaXB0U2FtcGxlUmVjb3Jk
OjpTY3JpcHRTYW1wbGVSZWNvcmQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGFu
dFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9w
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogZGVidWdn
ZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1l
KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2FsbEV2YWwpOgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dExvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkSW50MzJUb0RvdWJsZSk6
CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpK
SVRUaHVua3MpOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIpOgor
ICAgICAgICAoSlNDOjpKSVRUaHVua3M6OmNsZWFySG9zdEZ1bmN0aW9uU3R1YnMpOgorICAgICAg
ICAqIGppdC9KSVRTdHVicy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRh
YmxlOjpFdmFsRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpQ
cm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp+RnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om1hcmtDaGls
ZHJlbik6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjptYXJrQ2hpbGRyZW4pOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6Om1hcmtDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1
bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6RXhlY3V0
YWJsZUJhc2UpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6TmF0aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlZQ
dHJIYWNrRXhlY3V0YWJsZTo6VlB0ckhhY2tFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6U2Ny
aXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVj
dXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvbik6CisgICAg
ICAgICogcnVudGltZS9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6Cisg
ICAgICAgIChKU0M6OkhlYXA6Om1hcmtSb290cyk6CisgICAgICAgICogcnVudGltZS9IZWFwLmg6
CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Fj
dGl2YXRpb246OkpTQWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6bWFy
a0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAo
SlNDOjpKU0FjdGl2YXRpb246OkpTQWN0aXZhdGlvbkRhdGE6OkpTQWN0aXZhdGlvbkRhdGEpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246On5KU0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6
bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6
c3RvcmVWUHRycyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpnZXRIb3N0RnVuY3Rpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjptYXJrQ2hpbGRy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oOgorICAgICAgICAo
SlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpKU1N0YXRpY1Njb3BlT2JqZWN0RGF0YTo6SlNTdGF0
aWNTY29wZU9iamVjdERhdGEpOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpK
U1N0YXRpY1Njb3BlT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTWm9tYmllLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNab21iaWU6OmxlYWtlZFpvbWJpZVN0cnVjdHVyZSk6CisgICAgICAgICog
cnVudGltZS9KU1pvbWJpZS5oOgorICAgICAgICAoSlNDOjpKU1pvbWJpZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL01hcmtlZFNwYWNlLmg6CisKIDIwMTEtMDMtMDYgIFl1
dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDJkMjM1ZGZmMDg2N2I0YzA5ZmZlNDMwYjBiNmE1OWJhZjA1NzBjYjEuLmJhYzM4
ODBmMzg4YmQxZDcyOTU2ODZjZWM0YjEzZTMwMDlhMjA0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBD
b2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICB1bnNpZ25lZCBy
ZWdpc3RlckluZGV4ID0gbV9udW1WYXJzOwogICAgICAgICBzaXplX3QgaSA9IDA7CiAgICAgICAg
IGRvIHsKLSAgICAgICAgICAgIHByaW50ZigiICAgayV1ID0gJXNcbiIsIHJlZ2lzdGVySW5kZXgs
IHZhbHVlVG9Tb3VyY2VTdHJpbmcoZXhlYywgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5qc1ZhbHVl
KCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcHJpbnRmKCIgICBrJXUgPSAlc1xuIiwg
cmVnaXN0ZXJJbmRleCwgdmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCBtX2NvbnN0YW50UmVnaXN0
ZXJzW2ldLmdldCgpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgICsraTsKICAgICAgICAg
ICAgICsrcmVnaXN0ZXJJbmRleDsKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fY29uc3RhbnRSZWdp
c3RlcnMuc2l6ZSgpKTsKQEAgLTEzNjAsMTMgKzEzNjAsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXBTdGF0aXN0aWNzKCkKIH0KIAogQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBDb2RlVHlwZSBjb2RlVHlwZSwgSlNHbG9iYWxPYmplY3QgKmds
b2JhbE9iamVjdCwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVu
c2lnbmVkIHNvdXJjZU9mZnNldCwgU3ltYm9sVGFibGUqIHN5bVRhYiwgYm9vbCBpc0NvbnN0cnVj
dG9yKQotICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQorICAgIDogbV9nbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIG93bmVyRXhlY3V0YWJsZSwgZ2xvYmFs
T2JqZWN0KQogICAgICwgbV9oZWFwKCZtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXAp
CiAgICAgLCBtX251bUNhbGxlZVJlZ2lzdGVycygwKQogICAgICwgbV9udW1WYXJzKDApCiAgICAg
LCBtX251bVBhcmFtZXRlcnMoMCkKICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9y
KQotICAgICwgbV9vd25lckV4ZWN1dGFibGUob3duZXJFeGVjdXRhYmxlKQorICAgICwgbV9vd25l
ckV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIG93bmVyRXhlY3V0YWJsZSwg
b3duZXJFeGVjdXRhYmxlKQogICAgICwgbV9nbG9iYWxEYXRhKDApCiAjaWZuZGVmIE5ERUJVRwog
ICAgICwgbV9pbnN0cnVjdGlvbkNvdW50KDApCkBAIC0xNTI3LDE0ICsxNTI3LDI0IEBAIHZvaWQg
Q29kZUJsb2NrOjpyZWZTdHJ1Y3R1cmVzKEluc3RydWN0aW9uKiB2UEMpIGNvbnN0CiAgICAgQVNT
RVJUKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9p
ZCkgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5
X2lkKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRf
YnlfaWRfZ2VuZXJpYykgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNv
ZGUob3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKIH0KIAordm9pZCBFdmFsQ29kZUNhY2hlOjptYXJr
QWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQoreworICAgIEV2YWxDYWNoZU1hcDo6aXRl
cmF0b3IgZW5kID0gbV9jYWNoZU1hcC5lbmQoKTsKKyAgICBmb3IgKEV2YWxDYWNoZU1hcDo6aXRl
cmF0b3IgcHRyID0gbV9jYWNoZU1hcC5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikKKyAgICAg
ICAgbWFya1N0YWNrLmFwcGVuZCgmcHRyLT5zZWNvbmQpOworfQorCiB2b2lkIENvZGVCbG9jazo6
bWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1hcmtT
dGFjay5kZXByZWNhdGVkQXBwZW5kKCZtX2NvbnN0YW50UmVnaXN0ZXJzW2ldKTsKKyAgICBtYXJr
U3RhY2suYXBwZW5kKCZtX2dsb2JhbE9iamVjdCk7CisgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9v
d25lckV4ZWN1dGFibGUpOworICAgIGlmIChtX3JhcmVEYXRhKQorICAgICAgICBtX3JhcmVEYXRh
LT5tX2V2YWxDb2RlQ2FjaGUubWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgIG1hcmtTdGFj
ay5hcHBlbmRWYWx1ZXMobV9jb25zdGFudFJlZ2lzdGVycy5kYXRhKCksIG1fY29uc3RhbnRSZWdp
c3RlcnMuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25FeHBy
cy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9mdW5jdGlvbkV4cHJzW2ldLT5tYXJrQWdncmVnYXRl
KG1hcmtTdGFjayk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fZnVuY3Rpb25FeHByc1tp
XSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIG1fZnVuY3Rpb25EZWNsc1tpXS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2sp
OworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNbaV0pOwogfQogCiBI
YW5kbGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKaW5kZXggYmVmNDU2MTNiYmFjZjU4ZmU0YTdmZWMxMjQ4NTYwNTAwZDBiMGIxNi4uNjFhMjg4
MWEzM2M2Y2QyYzFlOTg4YjA3MzBjZGQ4Zjg3YWFjM2I4MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjQ4LDcgKzI0OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgQ29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgQ29kZVR5cGUsIEpTR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxT
b3VyY2VQcm92aWRlcj4sIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgU3ltYm9sVGFibGUqIHN5bWJv
bFRhYmxlLCBib29sIGlzQ29uc3RydWN0b3IpOwogCi0gICAgICAgIERlcHJlY2F0ZWRQdHI8SlNH
bG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OworICAgICAgICBXcml0ZUJhcnJpZXI8SlNHbG9i
YWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogICAgICAgICBIZWFwKiBtX2hlYXA7CiAKICAgICBw
dWJsaWM6CkBAIC0zNTksNyArMzU5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1
dGFibGVQb29sKiBleGVjdXRhYmxlUG9vbCgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVj
dXRhYmxlUG9vbCgpOyB9CiAjZW5kaWYKIAotICAgICAgICBTY3JpcHRFeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX293bmVyRXhlY3V0YWJsZTsgfQorICAgICAg
ICBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX293
bmVyRXhlY3V0YWJsZS5nZXQoKTsgfQogCiAgICAgICAgIHZvaWQgc2V0R2xvYmFsRGF0YShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEpIHsgbV9nbG9iYWxEYXRhID0gZ2xvYmFsRGF0YTsgfQogCkBA
IC00NzIsMTUgKzQ3MiwzMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllciYg
aWRlbnRpZmllcihpbnQgaW5kZXgpIHsgcmV0dXJuIG1faWRlbnRpZmllcnNbaW5kZXhdOyB9CiAK
ICAgICAgICAgc2l6ZV90IG51bWJlck9mQ29uc3RhbnRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVy
biBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKTsgfQotICAgICAgICB2b2lkIGFkZENvbnN0YW50
UmVnaXN0ZXIoY29uc3QgUmVnaXN0ZXImIHIpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnMu
YXBwZW5kKHIpOyB9Ci0gICAgICAgIFJlZ2lzdGVyJiBjb25zdGFudFJlZ2lzdGVyKGludCBpbmRl
eCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4XTsgfQorICAgICAgICB2b2lkIGFkZENvbnN0YW50KEpTVmFsdWUgdikKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5hcHBlbmQoV3JpdGVCYXJyaWVy
PFVua25vd24+KCkpOworICAgICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5sYXN0KCkuc2V0
KG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIG1fb3duZXJFeGVjdXRhYmxlLmdldCgpLCB2
KTsKKyAgICAgICAgfQorICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVn
aXN0ZXIoaW50IGluZGV4KSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9CiAgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBp
c0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4ID49
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBnZXRDb25zdGFudChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdp
c3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF0uanNWYWx1ZSgpOyB9Cisg
ICAgICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRDb25zdGFudChpbnQgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleF0uZ2V0KCk7IH0KIAotICAgICAgICB1bnNpZ25lZCBhZGRGdW5jdGlvbkRlY2woTm9u
TnVsbFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBuKSB7IHVuc2lnbmVkIHNpemUgPSBt
X2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOyBtX2Z1bmN0aW9uRGVjbHMuYXBwZW5kKG4pOyByZXR1cm4g
c2l6ZTsgfQorICAgICAgICB1bnNpZ25lZCBhZGRGdW5jdGlvbkRlY2woRnVuY3Rpb25FeGVjdXRh
YmxlKiBuKQorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBzaXplID0gbV9mdW5jdGlv
bkRlY2xzLnNpemUoKTsKKyAgICAgICAgICAgIG1fZnVuY3Rpb25EZWNscy5hcHBlbmQoV3JpdGVC
YXJyaWVyPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKSk7CisgICAgICAgICAgICBtX2Z1bmN0aW9uRGVj
bHMubGFzdCgpLnNldChtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBtX293bmVyRXhlY3V0
YWJsZS5nZXQoKSwgbik7CisgICAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgICAgfQogICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRGVjbChpbnQgaW5kZXgpIHsgcmV0dXJu
IG1fZnVuY3Rpb25EZWNsc1tpbmRleF0uZ2V0KCk7IH0KICAgICAgICAgaW50IG51bWJlck9mRnVu
Y3Rpb25EZWNscygpIHsgcmV0dXJuIG1fZnVuY3Rpb25EZWNscy5zaXplKCk7IH0KLSAgICAgICAg
dW5zaWduZWQgYWRkRnVuY3Rpb25FeHByKE5vbk51bGxQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0
YWJsZT4gbikgeyB1bnNpZ25lZCBzaXplID0gbV9mdW5jdGlvbkV4cHJzLnNpemUoKTsgbV9mdW5j
dGlvbkV4cHJzLmFwcGVuZChuKTsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgdW5zaWduZWQgYWRk
RnVuY3Rpb25FeHByKEZ1bmN0aW9uRXhlY3V0YWJsZSogbikKKyAgICAgICAgeworICAgICAgICAg
ICAgdW5zaWduZWQgc2l6ZSA9IG1fZnVuY3Rpb25FeHBycy5zaXplKCk7CisgICAgICAgICAgICBt
X2Z1bmN0aW9uRXhwcnMuYXBwZW5kKFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+KCkp
OworICAgICAgICAgICAgbV9mdW5jdGlvbkV4cHJzLmxhc3QoKS5zZXQobV9nbG9iYWxPYmplY3Qt
Pmdsb2JhbERhdGEoKSwgbV9vd25lckV4ZWN1dGFibGUuZ2V0KCksIG4pOworICAgICAgICAgICAg
cmV0dXJuIHNpemU7CisgICAgICAgIH0KICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbkV4cHIoaW50IGluZGV4KSB7IHJldHVybiBtX2Z1bmN0aW9uRXhwcnNbaW5kZXhdLmdldCgp
OyB9CiAKICAgICAgICAgdW5zaWduZWQgYWRkUmVnRXhwKFJlZ0V4cCogcikgeyBjcmVhdGVSYXJl
RGF0YUlmTmVjZXNzYXJ5KCk7IHVuc2lnbmVkIHNpemUgPSBtX3JhcmVEYXRhLT5tX3JlZ2V4cHMu
c2l6ZSgpOyBtX3JhcmVEYXRhLT5tX3JlZ2V4cHMuYXBwZW5kKHIpOyByZXR1cm4gc2l6ZTsgfQpA
QCAtNTM2LDcgKzU1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIG1fcmFy
ZURhdGEgPSBhZG9wdFB0cihuZXcgUmFyZURhdGEpOwogICAgICAgICB9CiAKLSAgICAgICAgU2Ny
aXB0RXhlY3V0YWJsZSogbV9vd25lckV4ZWN1dGFibGU7CisgICAgICAgIFdyaXRlQmFycmllcjxT
Y3JpcHRFeGVjdXRhYmxlPiBtX293bmVyRXhlY3V0YWJsZTsKICAgICAgICAgSlNHbG9iYWxEYXRh
KiBtX2dsb2JhbERhdGE7CiAKICAgICAgICAgVmVjdG9yPEluc3RydWN0aW9uPiBtX2luc3RydWN0
aW9uczsKQEAgLTU3NCw5ICs1OTAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8g
Q29uc3RhbnQgUG9vbAogICAgICAgICBWZWN0b3I8SWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsK
LSAgICAgICAgVmVjdG9yPFJlZ2lzdGVyPiBtX2NvbnN0YW50UmVnaXN0ZXJzOwotICAgICAgICBW
ZWN0b3I8UmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4gPiBtX2Z1bmN0aW9uRGVjbHM7Ci0gICAg
ICAgIFZlY3RvcjxSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiA+IG1fZnVuY3Rpb25FeHByczsK
KyAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KSwgUmVnaXN0ZXJfbXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJy
aWVyX1Vua25vd24pOworICAgICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9j
b25zdGFudFJlZ2lzdGVyczsKKyAgICAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxGdW5jdGlvbkV4
ZWN1dGFibGU+ID4gbV9mdW5jdGlvbkRlY2xzOworICAgICAgICBWZWN0b3I8V3JpdGVCYXJyaWVy
PEZ1bmN0aW9uRXhlY3V0YWJsZT4gPiBtX2Z1bmN0aW9uRXhwcnM7CiAKICAgICAgICAgU3ltYm9s
VGFibGUqIG1fc3ltYm9sVGFibGU7CiAKQEAgLTYxNywxMiArNjM0LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEdsb2JhbENvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIENvZGVUeXBlIGNvZGVUeXBlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
YXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNl
T2Zmc2V0KQogICAgICAgICAgICAgOiBDb2RlQmxvY2sob3duZXJFeGVjdXRhYmxlLCBjb2RlVHlw
ZSwgZ2xvYmFsT2JqZWN0LCBzb3VyY2VQcm92aWRlciwgc291cmNlT2Zmc2V0LCAmbV91bnNoYXJl
ZFN5bWJvbFRhYmxlLCBmYWxzZSkKICAgICAgICAgewotICAgICAgICAgICAgbV9oZWFwLT5jb2Rl
QmxvY2tzKCkuYWRkKHRoaXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgfkdsb2JhbENvZGVCbG9j
aygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1faGVhcC0+Y29kZUJsb2NrcygpLnJlbW92ZSh0
aGlzKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTY4MCw3ICs2OTEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+
Y29kZUJsb2NrKCk7CiAgICAgICAgIGlmIChjb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3Rlcklu
ZGV4KGluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBjb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0
ZXIoaW5kZXgpOworICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFJlZ2lzdGVy
Kj4oJmNvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihpbmRleCkpOwogICAgICAgICByZXR1cm4g
dGhpc1tpbmRleF07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V2YWxDb2RlQ2FjaGUuaAppbmRleCBlZGQ1NzVmZTZlMDI5MzRmZjA5NDA0ODkxNjFjMDk3NjA3
NzA0MTY3Li4zZTQ1MGIxMmMzZTQ1MGJkNWVjMDg3OTQyNDcwYjQ4Mjk2MmQ0YmVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKQEAgLTQxLDE0
ICs0MSwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIE1hcmtTdGFjazsKKwog
ICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUGFzc1JlZlB0
cjxFdmFsRXhlY3V0YWJsZT4gZ2V0KEV4ZWNTdGF0ZSogZXhlYywgYm9vbCBpblN0cmljdENvbnRl
eHQsIGNvbnN0IFVTdHJpbmcmIGV2YWxTb3VyY2UsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWlu
LCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGdldChF
eGVjU3RhdGUqIGV4ZWMsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyLCBib29sIGluU3RyaWN0Q29u
dGV4dCwgY29uc3QgVVN0cmluZyYgZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hh
aW4sIEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBSZWZQ
dHI8RXZhbEV4ZWN1dGFibGU+IGV2YWxFeGVjdXRhYmxlOworICAgICAgICAgICAgRXZhbEV4ZWN1
dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gMDsKIAogICAgICAgICAgICAgaWYgKCFpblN0cmljdENv
bnRleHQgJiYgZXZhbFNvdXJjZS5sZW5ndGgoKSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAm
JiAoKnNjb3BlQ2hhaW4tPmJlZ2luKCkpLT5pc1ZhcmlhYmxlT2JqZWN0KCkpCi0gICAgICAgICAg
ICAgICAgZXZhbEV4ZWN1dGFibGUgPSBtX2NhY2hlTWFwLmdldChldmFsU291cmNlLmltcGwoKSk7
CisgICAgICAgICAgICAgICAgZXZhbEV4ZWN1dGFibGUgPSBtX2NhY2hlTWFwLmdldChldmFsU291
cmNlLmltcGwoKSkuZ2V0KCk7CiAKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1dGFibGUpIHsK
ICAgICAgICAgICAgICAgICBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
ZXhlYywgbWFrZVNvdXJjZShldmFsU291cmNlKSwgaW5TdHJpY3RDb250ZXh0KTsKQEAgLTU3LDE5
ICs1OSwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICAgICAgICAgICAgICBpZiAoIWluU3RyaWN0Q29udGV4dCAmJiBldmFsU291cmNlLmxl
bmd0aCgpIDwgbWF4Q2FjaGVhYmxlU291cmNlTGVuZ3RoICYmICgqc2NvcGVDaGFpbi0+YmVnaW4o
KSktPmlzVmFyaWFibGVPYmplY3QoKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50
cmllcykKLSAgICAgICAgICAgICAgICAgICAgbV9jYWNoZU1hcC5zZXQoZXZhbFNvdXJjZS5pbXBs
KCksIGV2YWxFeGVjdXRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jYWNoZU1hcC5zZXQo
ZXZhbFNvdXJjZS5pbXBsKCksIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBvd25lciwgZXZhbEV4ZWN1dGFibGUpKTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgcmV0dXJuIGV2YWxFeGVjdXRhYmxlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJl
dHVybiBldmFsRXhlY3V0YWJsZTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNYXAuaXNFbXB0eSgpOyB9CiAKKyAgICAgICAgdm9pZCBt
YXJrQWdncmVnYXRlKE1hcmtTdGFjayYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCA9IDI1NjsKICAgICAgICAg
c3RhdGljIGNvbnN0IGludCBtYXhDYWNoZUVudHJpZXMgPSA2NDsKIAotICAgICAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBSZWZQdHI8RXZhbEV4ZWN1dGFibGU+ID4gRXZh
bENhY2hlTWFwOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBX
cml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+ID4gRXZhbENhY2hlTWFwOwogICAgICAgICBFdmFs
Q2FjaGVNYXAgbV9jYWNoZU1hcDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU2FtcGxpbmdUb29sLmgKaW5kZXggOWNhNTRkYThhMjlhMjZkNzc5ZmU5NDM2OGE4
ZTUyYjVkYzIyODczNC4uN2MwZmUzYWY3MTA3MDgwMTNiOGJiYmY5MTliZDY5NTE2N2ZmYmI1YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaApAQCAt
OTUsOCArOTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAK
ICAgICBzdHJ1Y3QgU2NyaXB0U2FtcGxlUmVjb3JkIHsKLSAgICAgICAgU2NyaXB0U2FtcGxlUmVj
b3JkKFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUpCi0gICAgICAgICAgICA6IG1fZXhlY3V0
YWJsZShleGVjdXRhYmxlKQorICAgICAgICBTY3JpcHRTYW1wbGVSZWNvcmQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlKQorICAgICAgICAgICAg
OiBtX2V4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZXhlY3V0YWJsZSkKICAgICAgICAgICAgICwgbV9j
b2RlQmxvY2soMCkKICAgICAgICAgICAgICwgbV9zYW1wbGVDb3VudCgwKQogICAgICAgICAgICAg
LCBtX29wY29kZVNhbXBsZUNvdW50KDApCkBAIC0xMTMsNyArMTEzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNhbXBsZShDb2RlQmxvY2sqLCBJbnN0cnVjdGlv
biopOwogCi0gICAgICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRhYmxlPiBtX2V4ZWN1dGFibGU7Cisg
ICAgICAgIEdsb2JhbDxTY3JpcHRFeGVjdXRhYmxlPiBtX2V4ZWN1dGFibGU7CiAgICAgICAgIENv
ZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgICAgIGludCBtX3NhbXBsZUNvdW50OwogICAgICAg
ICBpbnQgbV9vcGNvZGVTYW1wbGVDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMDhmNGJkNGY3
ZWI2YWZmODcxNmM3MWY1OTFjMjMxMmRlZWIxMjk0Yy4uNGZkMjE2Zjc0NjRiNzhmZjliNWFlMmM1
Yjg5YWM5ZDQwNTVjNDUzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTk0Myw3ICs5NDMsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ29uc3RhbnRWYWx1ZShKU1ZhbHVlIHYp
CiAgICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKICAgICAgICAgbV9jb25zdGFudFBvb2xSZWdpc3Rl
cnMuYXBwZW5kKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ICsgbV9uZXh0Q29uc3RhbnRPZmZz
ZXQpOwogICAgICAgICArK21fbmV4dENvbnN0YW50T2Zmc2V0OwotICAgICAgICBtX2NvZGVCbG9j
ay0+YWRkQ29uc3RhbnRSZWdpc3RlcihKU1ZhbHVlKHYpKTsKKyAgICAgICAgbV9jb2RlQmxvY2st
PmFkZENvbnN0YW50KEpTVmFsdWUodikpOwogICAgIH0gZWxzZQogICAgICAgICBpbmRleCA9IHJl
c3VsdC5maXJzdC0+c2Vjb25kOwogCkBAIC0xMDI2LDggKzEwMjYsOCBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lz
dGVySUQqIGRzdAogICAgICAgICBpZiAoc3JjMS0+aW5kZXgoKSA9PSBkc3RJbmRleAogICAgICAg
ICAgICAgJiYgc3JjMS0+aXNUZW1wb3JhcnkoKQogICAgICAgICAgICAgJiYgbV9jb2RlQmxvY2st
PmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNyYzItPmluZGV4KCkpCi0gICAgICAgICAgICAmJiBt
X2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihzcmMyLT5pbmRleCgpKS5qc1ZhbHVlKCkuaXNT
dHJpbmcoKSkgewotICAgICAgICAgICAgY29uc3QgVVN0cmluZyYgdmFsdWUgPSBhc1N0cmluZyht
X2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihzcmMyLT5pbmRleCgpKS5qc1ZhbHVlKCkpLT50
cnlHZXRWYWx1ZSgpOworICAgICAgICAgICAgJiYgbV9jb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0
ZXIoc3JjMi0+aW5kZXgoKSkuZ2V0KCkuaXNTdHJpbmcoKSkgeworICAgICAgICAgICAgY29uc3Qg
VVN0cmluZyYgdmFsdWUgPSBhc1N0cmluZyhtX2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3Rlcihz
cmMyLT5pbmRleCgpKS5nZXQoKSktPnRyeUdldFZhbHVlKCk7CiAgICAgICAgICAgICBpZiAodmFs
dWUgPT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgICAgICByZXdpbmRVbmFyeU9wKCk7CiAg
ICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9pc191bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IGIzODUxYzc2ZmUyZGRmZTc5ZGU5NWUxMGJhMDJmMmNiMDg4ZTkwYzkuLjVlNTU0NzA4NTUy
OWU3MDc0NmViNTM3YjIzNmZkM2U3MjVlZmU5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MywxMiAr
NDgzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBhZGRDb25zdGFu
dFZhbHVlKEpTVmFsdWUpOwogICAgICAgICB1bnNpZ25lZCBhZGRSZWdFeHAoUmVnRXhwKik7CiAK
LSAgICAgICAgUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IG1ha2VGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCisgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogbWFrZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y3JlYXRlKGV4ZWMsIGJvZHktPmlkZW50KCksIGJvZHktPnNvdXJjZSgpLCBib2R5LT51c2VzQXJn
dW1lbnRzKCksIGJvZHktPnBhcmFtZXRlcnMoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGJvZHkt
PmxpbmVObygpLCBib2R5LT5sYXN0TGluZSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIFBhc3NS
ZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBtYWtlRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KQorICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIG1ha2VGdW5jdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uQm9keU5v
ZGUqIGJvZHkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZShnbG9iYWxEYXRhLCBib2R5LT5pZGVudCgpLCBib2R5LT5zb3VyY2UoKSwgYm9k
eS0+dXNlc0FyZ3VtZW50cygpLCBib2R5LT5wYXJhbWV0ZXJzKCksIGJvZHktPmlzU3RyaWN0TW9k
ZSgpLCBib2R5LT5saW5lTm8oKSwgYm9keS0+bGFzdExpbmUoKSk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IGI5OTk0NDY2Y2Qw
ZTJjZDA0MzE2YmY5NGU3ZDlmOGNlMmZkMTc4MzUuLmQxYzkwYjBkMWVjMzI2YzU5MjhiMzQxOGNk
ZjE2MmIxMmJkYjYxNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcApAQCAtMTE4LDE0ICsxMTgsMTkgQEAgdm9pZCBEZWJ1Z2dlcjo6cmVjb21waWxlQWxs
SlNGdW5jdGlvbnMoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogSlNWYWx1ZSBldmFsdWF0ZUlu
R2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFVTdHJpbmcmIHNjcmlwdCwgSlNWYWx1ZSYgZXhjZXB0aW9u
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIENhbGxGcmFtZSogZ2xvYmFs
Q2FsbEZyYW1lID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7CiAKLSAgICBSZWZQdHI8
RXZhbEV4ZWN1dGFibGU+IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbENhbGxG
cmFtZSwgbWFrZVNvdXJjZShzY3JpcHQpLCBmYWxzZSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2
YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbENhbGxGcmFtZSwgbWFrZVNvdXJjZShz
Y3JpcHQpLCBmYWxzZSk7CisgICAgaWYgKCFldmFsKSB7CisgICAgICAgIGV4Y2VwdGlvbiA9IGds
b2JhbERhdGEuZXhjZXB0aW9uLmdldCgpOworICAgICAgICBnbG9iYWxEYXRhLmV4Y2VwdGlvbiA9
IEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAgICB9CiAgICAgSlNPYmpl
Y3QqIGVycm9yID0gZXZhbC0+Y29tcGlsZShnbG9iYWxDYWxsRnJhbWUsIGdsb2JhbENhbGxGcmFt
ZS0+c2NvcGVDaGFpbigpKTsKICAgICBpZiAoZXJyb3IpCiAgICAgICAgIHJldHVybiBlcnJvcjsK
IAotICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0
YSgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+ZXhlY3V0
ZShldmFsLmdldCgpLCBnbG9iYWxDYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgZ2xvYmFsQ2FsbEZy
YW1lLT5zY29wZUNoYWluKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2xvYmFsRGF0YS5pbnRl
cnByZXRlci0+ZXhlY3V0ZShldmFsLCBnbG9iYWxDYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgZ2xv
YmFsQ2FsbEZyYW1lLT5zY29wZUNoYWluKCkpOwogICAgIGlmIChnbG9iYWxEYXRhLmV4Y2VwdGlv
bikgewogICAgICAgICBleGNlcHRpb24gPSBnbG9iYWxEYXRhLmV4Y2VwdGlvbi5nZXQoKTsKICAg
ICAgICAgZ2xvYmFsRGF0YS5leGNlcHRpb24gPSBKU1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCBkNzc4
YmQ1NDdlNzYzN2YwYzljYTc2NzFlMTRlNDc2MjlhMDdkMmJmLi40ZDkwZWQ4MDgzYmIxOWI0Mzgz
ZDAyOWJlMGUyNzZhMGI5MzQ2MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTg3LDE0ICs4NywxOSBAQCBKU1Zh
bHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBVU3RyaW5nJiBzY3JpcHQsIEpT
VmFsdWUmIGV4Y2VwdGlvbikgYwogewogICAgIGlmICghbV9jYWxsRnJhbWUtPmNvZGVCbG9jaygp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgIAorICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IG1fY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7CisgICAgRXZhbEV4ZWN1dGFibGUq
IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKG1fY2FsbEZyYW1lLCBtYWtlU291cmNlKHNj
cmlwdCksIG1fY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGlm
IChnbG9iYWxEYXRhLmV4Y2VwdGlvbikgeworICAgICAgICBleGNlcHRpb24gPSBnbG9iYWxEYXRh
LmV4Y2VwdGlvbi5nZXQoKTsKKyAgICAgICAgZ2xvYmFsRGF0YS5leGNlcHRpb24gPSBKU1ZhbHVl
KCk7CisgICAgfQogCi0gICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBldmFsID0gRXZhbEV4ZWN1
dGFibGU6OmNyZWF0ZShtX2NhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3JpcHQpLCBtX2NhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICBKU09iamVjdCogZXJyb3IgPSBl
dmFsLT5jb21waWxlKG1fY2FsbEZyYW1lLCBtX2NhbGxGcmFtZS0+c2NvcGVDaGFpbigpKTsKICAg
ICBpZiAoZXJyb3IpCiAgICAgICAgIHJldHVybiBlcnJvcjsKIAotICAgIEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSA9IG1fY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7Ci0gICAgSlNWYWx1ZSByZXN1
bHQgPSBnbG9iYWxEYXRhLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwuZ2V0KCksIG1fY2FsbEZy
YW1lLCB0aGlzT2JqZWN0KCksIG1fY2FsbEZyYW1lLT5zY29wZUNoYWluKCkpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+ZXhlY3V0ZShldmFsLCBtX2NhbGxG
cmFtZSwgdGhpc09iamVjdCgpLCBtX2NhbGxGcmFtZS0+c2NvcGVDaGFpbigpKTsKICAgICBpZiAo
Z2xvYmFsRGF0YS5leGNlcHRpb24pIHsKICAgICAgICAgZXhjZXB0aW9uID0gZ2xvYmFsRGF0YS5l
eGNlcHRpb24uZ2V0KCk7CiAgICAgICAgIGdsb2JhbERhdGEuZXhjZXB0aW9uID0gSlNWYWx1ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKaW5kZXggYjlhOWM0MGJhN2JmNjdhZGE5NWJmNTFhNDQ4NTQ4MDFkMTE5MjhhYi4uYTBkOTVi
MWM5YTIwMzJhM2Q3YjMzMmI5YzZhZDQ5OWJjNmRiMzAyZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00MDksMTMgKzQwOSwx
MyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBJbnRlcnByZXRlcjo6Y2FsbEV2YWwoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIFJlZ2lzdGVyRmlsZSogcgogCiAgICAgU2NvcGVDaGFpbk5vZGUqIHNjb3Bl
Q2hhaW4gPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsKICAgICBKU1ZhbHVlIGV4Y2VwdGlvblZh
bHVlOwotICAgIFJlZlB0cjxFdmFsRXhlY3V0YWJsZT4gZXZhbCA9IGNvZGVCbG9jay0+ZXZhbENv
ZGVDYWNoZSgpLmdldChjYWxsRnJhbWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHByb2dy
YW1Tb3VyY2UsIHNjb3BlQ2hhaW4sIGV4Y2VwdGlvblZhbHVlKTsKKyAgICBFdmFsRXhlY3V0YWJs
ZSogZXZhbCA9IGNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldChjYWxsRnJhbWUsIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHByb2dy
YW1Tb3VyY2UsIHNjb3BlQ2hhaW4sIGV4Y2VwdGlvblZhbHVlKTsKIAogICAgIEFTU0VSVCghZXZh
bCA9PSBleGNlcHRpb25WYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFldmFsKSkKICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSk7CiAKLSAgICByZXR1
cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbC5nZXQo
KSwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT50aGlzUmVnaXN0
ZXIoKSkuanNWYWx1ZSgpLnRvVGhpc09iamVjdChjYWxsRnJhbWUpLCBjYWxsRnJhbWUtPnJlZ2lz
dGVycygpIC0gcmVnaXN0ZXJGaWxlLT5zdGFydCgpICsgcmVnaXN0ZXJPZmZzZXQsIHNjb3BlQ2hh
aW4pOworICAgIHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+ZXhl
Y3V0ZShldmFsLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dW5jaGVja2VkUihjb2RlQmxvY2stPnRo
aXNSZWdpc3RlcigpKS5qc1ZhbHVlKCkudG9UaGlzT2JqZWN0KGNhbGxGcmFtZSksIGNhbGxGcmFt
ZS0+cmVnaXN0ZXJzKCkgLSByZWdpc3RlckZpbGUtPnN0YXJ0KCkgKyByZWdpc3Rlck9mZnNldCwg
c2NvcGVDaGFpbik7CiB9CiAKIEludGVycHJldGVyOjpJbnRlcnByZXRlcihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZU1ldGhvZHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9k
cy5oCmluZGV4IDM5Y2E0YTVmMTlmMWE4YTU0OGQ1YTRkZGU0YjNlYTI1ZDE0OTIzOGQuLjIwY2Zl
NGMwZTFmYjBiNjhmNTBhOWJmNjVkM2Y0NmRhMWI2MzA3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCkBAIC0zOTYsNyArMzk2LDcgQEAgaW5saW5l
IHZvaWQgSklUOjplbWl0TG9hZDIodW5zaWduZWQgaW5kZXgxLCBSZWdpc3RlcklEIHRhZzEsIFJl
Z2lzdGVySUQgcGF5bG9hZDEKIGlubGluZSB2b2lkIEpJVDo6ZW1pdExvYWREb3VibGUodW5zaWdu
ZWQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSkKIHsKICAgICBpZiAobV9jb2RlQmxvY2stPmlz
Q29uc3RhbnRSZWdpc3RlckluZGV4KGluZGV4KSkgewotICAgICAgICBSZWdpc3RlciYgaW5Db25z
dGFudFBvb2wgPSBtX2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihpbmRleCk7CisgICAgICAg
IFdyaXRlQmFycmllcjxVbmtub3duPiYgaW5Db25zdGFudFBvb2wgPSBtX2NvZGVCbG9jay0+Y29u
c3RhbnRSZWdpc3RlcihpbmRleCk7CiAgICAgICAgIGxvYWREb3VibGUoJmluQ29uc3RhbnRQb29s
LCB2YWx1ZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGxvYWREb3VibGUoYWRkcmVzc0ZvcihpbmRl
eCksIHZhbHVlKTsKQEAgLTQwNSw3ICs0MDUsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2Fk
RG91YmxlKHVuc2lnbmVkIGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpCiBpbmxpbmUgdm9pZCBK
SVQ6OmVtaXRMb2FkSW50MzJUb0RvdWJsZSh1bnNpZ25lZCBpbmRleCwgRlBSZWdpc3RlcklEIHZh
bHVlKQogewogICAgIGlmIChtX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW5k
ZXgpKSB7Ci0gICAgICAgIFJlZ2lzdGVyJiBpbkNvbnN0YW50UG9vbCA9IG1fY29kZUJsb2NrLT5j
b25zdGFudFJlZ2lzdGVyKGluZGV4KTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBp
bkNvbnN0YW50UG9vbCA9IG1fY29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKGluZGV4KTsKICAg
ICAgICAgY2hhciogYnl0ZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPigmaW5Db25z
dGFudFBvb2wpOwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShBYnNvbHV0ZUFkZHJlc3Mo
Ynl0ZVBvaW50ZXIgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkp
LCB2YWx1ZSk7CiAgICAgfSBlbHNlCkBAIC03MDEsNyArNzAxLDcgQEAgQUxXQVlTX0lOTElORSB2
b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQgcmVnLCBpbnQg
dlJlZykKIGlubGluZSB2b2lkIEpJVDo6ZW1pdExvYWREb3VibGUodW5zaWduZWQgaW5kZXgsIEZQ
UmVnaXN0ZXJJRCB2YWx1ZSkKIHsKICAgICBpZiAobV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdp
c3RlckluZGV4KGluZGV4KSkgewotICAgICAgICBSZWdpc3RlciYgaW5Db25zdGFudFBvb2wgPSBt
X2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihpbmRleCk7CisgICAgICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiYgaW5Db25zdGFudFBvb2wgPSBtX2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3Rl
cihpbmRleCk7CiAgICAgICAgIGxvYWREb3VibGUoJmluQ29uc3RhbnRQb29sLCB2YWx1ZSk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIGxvYWREb3VibGUoYWRkcmVzc0ZvcihpbmRleCksIHZhbHVlKTsK
QEAgLTcxMCw3ICs3MTAsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2FkRG91YmxlKHVuc2ln
bmVkIGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2Fk
SW50MzJUb0RvdWJsZSh1bnNpZ25lZCBpbmRleCwgRlBSZWdpc3RlcklEIHZhbHVlKQogewogICAg
IGlmIChtX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW5kZXgpKSB7Ci0gICAg
ICAgIFJlZ2lzdGVyJiBpbkNvbnN0YW50UG9vbCA9IG1fY29kZUJsb2NrLT5jb25zdGFudFJlZ2lz
dGVyKGluZGV4KTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbkNvbnN0YW50UG9v
bCA9IG1fY29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKGluZGV4KTsKICAgICAgICAgY29udmVy
dEludDMyVG9Eb3VibGUoQWJzb2x1dGVBZGRyZXNzKCZpbkNvbnN0YW50UG9vbCksIHZhbHVlKTsK
ICAgICB9IGVsc2UKICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoYWRkcmVzc0ZvcihpbmRl
eCksIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggOTVi
ZjUyYzA3ZTI1MjE5OTg4ZmM5Njk2NjNjMzZmYjVhYjUyNTM4OS4uYmExOGYwYmRiNWY1YTI2NWIy
MTcwNGRhZjlhYTYyMzY5OTIzZmViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRl
ICJHbG9iYWwuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIK
ICNpbmNsdWRlICJKU0FycmF5LmgiCkBAIC02NzksNiArNjgwLDcgQEAgX19hc20gdm9pZCBjdGlP
cFRocm93Tm90Q2F1Z2h0KCkKICNlbmRpZgogCiBKSVRUaHVua3M6OkpJVFRodW5rcyhKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEpCisgICAgOiBtX2hvc3RGdW5jdGlvblN0dWJNYXAobmV3IEhvc3RG
dW5jdGlvblN0dWJNYXApCiB7CiAgICAgaWYgKCFnbG9iYWxEYXRhLT5leGVjdXRhYmxlQWxsb2Nh
dG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzQ4MywyMiArMzQ4NSwyNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1bmtzOjpjdGlTdHViKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgVGh1bmtHZW5lcmF0bwogICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25kOwog
fQogCi1QYXNzUmVmUHRyPE5hdGl2ZUV4ZWN1dGFibGU+IEpJVFRodW5rczo6aG9zdEZ1bmN0aW9u
U3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKQor
TmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24pCiB7Ci0gICAgc3RkOjpwYWly
PEhvc3RGdW5jdGlvblN0dWJNYXA6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IG1faG9zdEZ1bmN0
aW9uU3R1Yk1hcC5hZGQoZnVuY3Rpb24sIDApOworICAgIHN0ZDo6cGFpcjxIb3N0RnVuY3Rpb25T
dHViTWFwOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBtX2hvc3RGdW5jdGlvblN0dWJNYXAtPmFk
ZChmdW5jdGlvbiwgR2xvYmFsPE5hdGl2ZUV4ZWN1dGFibGU+KEdsb2JhbDxOYXRpdmVFeGVjdXRh
YmxlPjo6RW1wdHlWYWx1ZSkpOwogICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAgICAgIGVudHJ5
LmZpcnN0LT5zZWNvbmQgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoSklUOjpjb21waWxlQ1RJ
TmF0aXZlQ2FsbChnbG9iYWxEYXRhLCBtX2V4ZWN1dGFibGVQb29sLCBmdW5jdGlvbiksIGZ1bmN0
aW9uLCBjdGlOYXRpdmVDb25zdHJ1Y3QoKSwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3Ip
OwotICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25kOworICAgICAgICBlbnRyeS5maXJzdC0+
c2Vjb25kLnNldCgqZ2xvYmFsRGF0YSwgTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCpnbG9iYWxE
YXRhLCBKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKGdsb2JhbERhdGEsIG1fZXhlY3V0YWJsZVBv
b2wsIGZ1bmN0aW9uKSwgZnVuY3Rpb24sIGN0aU5hdGl2ZUNvbnN0cnVjdCgpLCBjYWxsSG9zdEZ1
bmN0aW9uQXNDb25zdHJ1Y3RvcikpOworICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25kLmdl
dCgpOwogfQogCi1QYXNzUmVmUHRyPE5hdGl2ZUV4ZWN1dGFibGU+IEpJVFRodW5rczo6aG9zdEZ1
bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IpCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVu
a3M6Omhvc3RGdW5jdGlvblN0dWIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5j
dGlvbiBmdW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQogewotICAgIHN0ZDo6cGFp
cjxIb3N0RnVuY3Rpb25TdHViTWFwOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBtX2hvc3RGdW5j
dGlvblN0dWJNYXAuYWRkKGZ1bmN0aW9uLCAwKTsKKyAgICBzdGQ6OnBhaXI8SG9zdEZ1bmN0aW9u
U3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9ob3N0RnVuY3Rpb25TdHViTWFwLT5h
ZGQoZnVuY3Rpb24sIEdsb2JhbDxOYXRpdmVFeGVjdXRhYmxlPihHbG9iYWw8TmF0aXZlRXhlY3V0
YWJsZT46OkVtcHR5VmFsdWUpKTsKICAgICBpZiAoZW50cnkuc2Vjb25kKSB7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlID0gZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkgPyBnZW5l
cmF0b3IoZ2xvYmFsRGF0YSwgbV9leGVjdXRhYmxlUG9vbC5nZXQoKSkgOiBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKTsKLSAgICAgICAgZW50cnkuZmlyc3QtPnNlY29uZCA9IE5hdGl2ZUV4ZWN1dGFi
bGU6OmNyZWF0ZShjb2RlLCBmdW5jdGlvbiwgY3RpTmF0aXZlQ29uc3RydWN0KCksIGNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKTsKKyAgICAgICAgZW50cnkuZmlyc3QtPnNlY29uZC5zZXQo
Kmdsb2JhbERhdGEsIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgY29kZSwg
ZnVuY3Rpb24sIGN0aU5hdGl2ZUNvbnN0cnVjdCgpLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1
Y3RvcikpOwogICAgIH0KLSAgICByZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZDsKKyAgICByZXR1
cm4gZW50cnkuZmlyc3QtPnNlY29uZC5nZXQoKTsKK30KKwordm9pZCBKSVRUaHVua3M6OmNsZWFy
SG9zdEZ1bmN0aW9uU3R1YnMoKQoreworICAgIG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC5jbGVhcigp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
aAppbmRleCA2NWY2YTU1YmM0MTY2ZjhjMmEyOTk0NTY2Zjg4MzZhYWQ4MDdiZWVmLi5hZjZlMTNm
MTY3YTU5YWVlOGMxNmUyNzczOTcwYTBiYjA4YjlhYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5oCkBAIC0yNTQsNiArMjU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZXh0
ZXJuICJDIiB2b2lkIGN0aU9wVGhyb3dOb3RDYXVnaHQoKTsKICAgICBleHRlcm4gIkMiIEVuY29k
ZWRKU1ZhbHVlIGN0aVRyYW1wb2xpbmUodm9pZCogY29kZSwgUmVnaXN0ZXJGaWxlKiwgQ2FsbEZy
YW1lKiwgdm9pZCogLyp1bnVzZWQxKi8sIFByb2ZpbGVyKiosIEpTR2xvYmFsRGF0YSopOwogCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEdsb2JhbDsKKwogICAgIGNsYXNzIEpJVFRo
dW5rcyB7CiAgICAgcHVibGljOgogICAgICAgICBKSVRUaHVua3MoSlNHbG9iYWxEYXRhKik7CkBA
IC0yNzMsMTMgKzI3NSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgY3RpU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFRodW5rR2VuZXJh
dG9yIGdlbmVyYXRvcik7CiAKLSAgICAgICAgUGFzc1JlZlB0cjxOYXRpdmVFeGVjdXRhYmxlPiBo
b3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24g
ZnVuYyk7Ci0gICAgICAgIFBhc3NSZWZQdHI8TmF0aXZlRXhlY3V0YWJsZT4gaG9zdEZ1bmN0aW9u
U3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMsIFRodW5r
R2VuZXJhdG9yIGdlbmVyYXRvcik7CisgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5j
dGlvblN0dWIoSlNHbG9iYWxEYXRhKiwgTmF0aXZlRnVuY3Rpb24pOworICAgICAgICBOYXRpdmVF
eGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSosIE5hdGl2ZUZ1bmN0aW9u
LCBUaHVua0dlbmVyYXRvcik7CisKKyAgICAgICAgdm9pZCBjbGVhckhvc3RGdW5jdGlvblN0dWJz
KCk7CisKICAgICBwcml2YXRlOgogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8VGh1bmtHZW5lcmF0
b3IsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cj4gQ1RJU3R1Yk1hcDsKICAgICAgICAgQ1RJU3R1Yk1h
cCBtX2N0aVN0dWJNYXA7Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxOYXRpdmVGdW5jdGlvbiwg
UmVmUHRyPE5hdGl2ZUV4ZWN1dGFibGU+ID4gSG9zdEZ1bmN0aW9uU3R1Yk1hcDsKLSAgICAgICAg
SG9zdEZ1bmN0aW9uU3R1Yk1hcCBtX2hvc3RGdW5jdGlvblN0dWJNYXA7CisgICAgICAgIHR5cGVk
ZWYgSGFzaE1hcDxOYXRpdmVGdW5jdGlvbiwgR2xvYmFsPE5hdGl2ZUV4ZWN1dGFibGU+ID4gSG9z
dEZ1bmN0aW9uU3R1Yk1hcDsKKyAgICAgICAgT3duUHRyPEhvc3RGdW5jdGlvblN0dWJNYXA+IG1f
aG9zdEZ1bmN0aW9uU3R1Yk1hcDsKICAgICAgICAgUmVmUHRyPEV4ZWN1dGFibGVQb29sPiBtX2V4
ZWN1dGFibGVQb29sOwogCiAgICAgICAgIFRyYW1wb2xpbmVTdHJ1Y3R1cmUgbV90cmFtcG9saW5l
U3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNw
cAppbmRleCA4M2Q4YmQ4NWFkZDEyYTk0ZmQ4YzdiODExNDg3ZTU3MWI1YTkwNDJjLi5iOGRjYjIx
YjBmOTBmNDJmM2IwZGFlMzIyMjY5MWQ3YWViYzRkY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMzksNyArMzksNyBAQCBDb21wbGV0aW9u
IGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQog
ICAgIEpTTG9jayBsb2NrKGV4ZWMpOwogICAgIEFTU0VSVChleGVjLT5nbG9iYWxEYXRhKCkuaWRl
bnRpZmllclRhYmxlID09IHd0ZlRocmVhZERhdGEoKS5jdXJyZW50SWRlbnRpZmllclRhYmxlKCkp
OwogCi0gICAgUmVmUHRyPFByb2dyYW1FeGVjdXRhYmxlPiBwcm9ncmFtID0gUHJvZ3JhbUV4ZWN1
dGFibGU6OmNyZWF0ZShleGVjLCBzb3VyY2UpOworICAgIFByb2dyYW1FeGVjdXRhYmxlKiBwcm9n
cmFtID0gUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBzb3VyY2UpOwogICAgIEpTT2Jq
ZWN0KiBlcnJvciA9IHByb2dyYW0tPmNoZWNrU3ludGF4KGV4ZWMpOwogICAgIGlmIChlcnJvcikK
ICAgICAgICAgcmV0dXJuIENvbXBsZXRpb24oVGhyb3csIGVycm9yKTsKQEAgLTUyLDE0ICs1Miwx
OSBAQCBDb21wbGV0aW9uIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUq
IHNjb3BlQ2hhaW4sIGNvbnN0IFNvdXJjZUNvZAogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwogICAg
IEFTU0VSVChleGVjLT5nbG9iYWxEYXRhKCkuaWRlbnRpZmllclRhYmxlID09IHd0ZlRocmVhZERh
dGEoKS5jdXJyZW50SWRlbnRpZmllclRhYmxlKCkpOwogCi0gICAgUmVmUHRyPFByb2dyYW1FeGVj
dXRhYmxlPiBwcm9ncmFtID0gUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBzb3VyY2Up
OworICAgIFByb2dyYW1FeGVjdXRhYmxlKiBwcm9ncmFtID0gUHJvZ3JhbUV4ZWN1dGFibGU6OmNy
ZWF0ZShleGVjLCBzb3VyY2UpOworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICBKU1ZhbHVl
IGV4Y2VwdGlvbiA9IGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24uZ2V0KCk7CisgICAgICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVy
biBDb21wbGV0aW9uKFRocm93LCBleGNlcHRpb24pOworICAgIH0KICAgICBKU09iamVjdCogZXJy
b3IgPSBwcm9ncmFtLT5jb21waWxlKGV4ZWMsIHNjb3BlQ2hhaW4pOwogICAgIGlmIChlcnJvcikK
ICAgICAgICAgcmV0dXJuIENvbXBsZXRpb24oVGhyb3csIGVycm9yKTsKIAogICAgIEpTT2JqZWN0
KiB0aGlzT2JqID0gKCF0aGlzVmFsdWUgfHwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkp
ID8gZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpIDogdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMp
OwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBleGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlKHBy
b2dyYW0uZ2V0KCksIGV4ZWMsIHNjb3BlQ2hhaW4sIHRoaXNPYmopOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShwcm9ncmFtLCBleGVjLCBzY29wZUNo
YWluLCB0aGlzT2JqKTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAg
ICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IGV4ZWMtPmV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA2MDdhMmMyZDc1ZDYyNmU5ZTJh
ODk4OWMyZmI3MDRjMzcxM2MxNzM4Li5iMzkyZjI2Y2YxMWIzY2E5OWZmYTQ3ZWU4ZWE1OTQwZDQy
NTYxZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cApAQCAtNDQsNyArNDQsNyBAQCBWUHRySGFja0V4ZWN1dGFibGU6On5WUHRySGFja0V4ZWN1dGFi
bGUoKQogfQogCiBFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQotICAgIDog
U2NyaXB0RXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IFNj
cmlwdEV4ZWN1dGFibGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmV2YWxFeGVjdXRhYmxlU3RydWN0dXJl
LCBleGVjLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCkKIHsKIH0KIApAQCAtNTMsNyArNTMsNyBA
QCBFdmFsRXhlY3V0YWJsZTo6fkV2YWxFeGVjdXRhYmxlKCkKIH0KIAogUHJvZ3JhbUV4ZWN1dGFi
bGU6OlByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGZhbHNlKQorICAg
IDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT5nbG9iYWxEYXRhKCkucHJvZ3JhbUV4ZWN1dGFibGVT
dHJ1Y3R1cmUsIGV4ZWMsIHNvdXJjZSwgZmFsc2UpCiB7CiB9CiAKQEAgLTYyLDcgKzYyLDcgQEAg
UHJvZ3JhbUV4ZWN1dGFibGU6On5Qcm9ncmFtRXhlY3V0YWJsZSgpCiB9CiAKIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNl
VXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGluU3Ry
aWN0Q29udGV4dCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQotICAgIDogU2NyaXB0RXhl
Y3V0YWJsZShnbG9iYWxEYXRhLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IFNjcmlw
dEV4ZWN1dGFibGUoZ2xvYmFsRGF0YS0+ZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLCBnbG9i
YWxEYXRhLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCkKICAgICAsIG1fbnVtQ2FwdHVyZWRWYXJp
YWJsZXMoMCkKICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKGZvcmNlVXNlc0FyZ3VtZW50cykK
ICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQpAQCAtNzQsNyArNzQsNyBAQCBGdW5jdGlv
bkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpZQogfQogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0
YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVy
cyogcGFyYW1ldGVycywgYm9vbCBpblN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBs
YXN0TGluZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYywgc291cmNlLCBpblN0cmljdENv
bnRleHQpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPmdsb2JhbERhdGEoKS5mdW5jdGlv
bkV4ZWN1dGFibGVTdHJ1Y3R1cmUsIGV4ZWMsIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0KQogICAg
ICwgbV9udW1DYXB0dXJlZFZhcmlhYmxlcygwKQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMo
Zm9yY2VVc2VzQXJndW1lbnRzKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCkBAIC04
Nyw2ICs4NywxMiBAQCBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsCiAKIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6fkZ1bmN0aW9uRXhlY3V0YWJsZSgpCiB7CisjaWYgRU5BQkxFKEpJVF9PUFRJTUlaRV9DQUxM
KQorICAgIGlmIChpc0dlbmVyYXRlZEZvckNhbGwoKSkKKyAgICAgICAgZ2VuZXJhdGVkQnl0ZWNv
ZGVGb3JDYWxsKCkudW5saW5rQ2FsbGVycygpOworICAgIGlmIChpc0dlbmVyYXRlZEZvckNvbnN0
cnVjdCgpKQorICAgICAgICBnZW5lcmF0ZWRCeXRlY29kZUZvckNvbnN0cnVjdCgpLnVubGlua0Nh
bGxlcnMoKTsKKyNlbmRpZgogfQogCiBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJ
bnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSkK
QEAgLTEyNyw2ICsxMzMsMTMgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50
ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGUKICAgICByZXR1cm4g
MDsKIH0KIAordm9pZCBFdmFsRXhlY3V0YWJsZTo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFy
a1N0YWNrKQoreworICAgIFNjcmlwdEV4ZWN1dGFibGU6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2sp
OworICAgIGlmIChtX2V2YWxDb2RlQmxvY2spCisgICAgICAgIG1fZXZhbENvZGVCbG9jay0+bWFy
a0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworfQorCiBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6
OmNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCogZXhjZXB0aW9u
ID0gMDsKQEAgLTE3OCw2ICsxOTEsMTMgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpj
b21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2MKICAgIHJl
dHVybiAwOwogfQogCit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjptYXJrQ2hpbGRyZW4oTWFya1N0
YWNrJiBtYXJrU3RhY2spCit7CisgICAgU2NyaXB0RXhlY3V0YWJsZTo6bWFya0NoaWxkcmVuKG1h
cmtTdGFjayk7CisgICAgaWYgKG1fcHJvZ3JhbUNvZGVCbG9jaykKKyAgICAgICAgbV9wcm9ncmFt
Q29kZUJsb2NrLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7Cit9CisKIEpTT2JqZWN0KiBGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUpCiB7CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlv
biA9IDA7CkBAIC0yNjgsOCArMjg4LDkgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGUKICAgICBy
ZXR1cm4gMDsKIH0KIAotdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1hcmtBZ2dyZWdhdGUoTWFy
a1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bWFya0NoaWxkcmVu
KE1hcmtTdGFjayYgbWFya1N0YWNrKQogeworICAgIFNjcmlwdEV4ZWN1dGFibGU6Om1hcmtDaGls
ZHJlbihtYXJrU3RhY2spOwogICAgIGlmIChtX2NvZGVCbG9ja0ZvckNhbGwpCiAgICAgICAgIG1f
Y29kZUJsb2NrRm9yQ2FsbC0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwogICAgIGlmIChtX2Nv
ZGVCbG9ja0ZvckNvbnN0cnVjdCkKQEAgLTI4OCw3ICszMDksNyBAQCB2b2lkIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZGlzY2FyZENvZGUoKQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8RnVuY3Rpb25F
eGVjdXRhYmxlPiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKGNvbnN0IElkZW50
aWZpZXImIGZ1bmN0aW9uTmFtZSwgRXhlY1N0YXRlKiBleGVjLCBEZWJ1Z2dlciogZGVidWdnZXIs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNPYmplY3QqKiBleGNlcHRpb24pCitGdW5jdGlv
bkV4ZWN1dGFibGUqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoY29uc3QgSWRl
bnRpZmllciYgZnVuY3Rpb25OYW1lLCBFeGVjU3RhdGUqIGV4ZWMsIERlYnVnZ2VyKiBkZWJ1Z2dl
ciwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU09iamVjdCoqIGV4Y2VwdGlvbikKIHsKICAg
ICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKICAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBleGVjLT5nbG9i
YWxEYXRhKCkucGFyc2VyLT5wYXJzZTxQcm9ncmFtTm9kZT4obGV4aWNhbEdsb2JhbE9iamVjdCwg
ZGVidWdnZXIsIGV4ZWMsIHNvdXJjZSwgMCwgSlNQYXJzZU5vcm1hbCwgZXhjZXB0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCBiMjU2NWEwMDEw
M2E3MmI5NWRjNmM1NjU1YjczZDY0NDRhNTMwNzQyLi45Y2E5ZmNiNGYwZGIxZmMxNmUzMjYzMTgx
MTk1ODg0Yzg5ZTZhM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgc3RydWN0IEV4
Y2VwdGlvbkluZm87CiAKLSAgICBjbGFzcyBFeGVjdXRhYmxlQmFzZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEV4ZWN1dGFibGVCYXNlPiB7CisgICAgY2xhc3MgRXhlY3V0YWJsZUJhc2UgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAgIHByb3RlY3RlZDoKQEAg
LTUyLDIxICs1MiwyMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGlu
dCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQgPSAtMTsKICAgICAKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEV4ZWN1dGFibGVCYXNlKGludCBudW1QYXJhbWV0ZXJzKQotICAgICAgICAgICAgOiBt
X251bVBhcmFtZXRlcnNGb3JDYWxsKG51bVBhcmFtZXRlcnMpCisgICAgICAgIEV4ZWN1dGFibGVC
YXNlKFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGludCBudW1QYXJhbWV0ZXJzKQor
ICAgICAgICAgICAgOiBKU0NlbGwoc3RydWN0dXJlLnJlbGVhc2VSZWYoKSkKKyAgICAgICAgICAg
ICwgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbChudW1QYXJhbWV0ZXJzKQogICAgICAgICAgICAgLCBt
X251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3QobnVtUGFyYW1ldGVycykKICAgICAgICAgewogICAg
ICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB+RXhlY3V0YWJsZUJhc2UoKSB7fQotCiAgICAgICAg
IGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NF
UlQoKG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwgPT0gTlVNX1BBUkFNRVRFUlNfSVNfSE9TVCkgPT0g
KG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9PSBOVU1fUEFSQU1FVEVSU19JU19IT1NUKSk7
CiAgICAgICAgICAgICByZXR1cm4gbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCA9PSBOVU1fUEFSQU1F
VEVSU19JU19IT1NUOwogICAgICAgICB9CiAKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUocHJvdG8sIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBB
bm9ueW1vdXNTbG90Q291bnQsIDApOyB9CisKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IDA7CiAgICAgICAgIGludCBtX251bVBh
cmFtZXRlcnNGb3JDYWxsOwogICAgICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0
OwogCkBAIC05NiwxNiArOTgsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CiAgICAgcHVibGljOgogI2lmIEVOQUJMRShKSVQpCi0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE5hdGl2ZUV4ZWN1dGFibGU+IGNyZWF0ZShNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
Y2FsbFRodW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKKyAgICAgICAgc3Rh
dGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0
cnVjdG9yKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIWNhbGxUaHVuaykKLSAgICAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5hdGl2ZUV4ZWN1dGFibGUoSklUQ29kZSgpLCBm
dW5jdGlvbiwgSklUQ29kZSgpLCBjb25zdHJ1Y3RvcikpOwotICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBOYXRpdmVFeGVjdXRhYmxlKEpJVENvZGU6Okhvc3RGdW5jdGlvbihjYWxsVGh1
bmspLCBmdW5jdGlvbiwgSklUQ29kZTo6SG9zdEZ1bmN0aW9uKGNvbnN0cnVjdFRodW5rKSwgY29u
c3RydWN0b3IpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICgmZ2xvYmFsRGF0YSkgTmF0
aXZlRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBKSVRDb2RlKCksIGZ1bmN0aW9uLCBKSVRDb2RlKCks
IGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKCZnbG9iYWxEYXRhKSBOYXRp
dmVFeGVjdXRhYmxlKGdsb2JhbERhdGEsIEpJVENvZGU6Okhvc3RGdW5jdGlvbihjYWxsVGh1bmsp
LCBmdW5jdGlvbiwgSklUQ29kZTo6SG9zdEZ1bmN0aW9uKGNvbnN0cnVjdFRodW5rKSwgY29uc3Ry
dWN0b3IpOwogICAgICAgICB9CiAjZWxzZQotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOYXRp
dmVFeGVjdXRhYmxlPiBjcmVhdGUoTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0
aW9uIGNvbnN0cnVjdG9yKQorICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2
ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE5hdGl2ZUV4ZWN1dGFibGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9yKSk7CisgICAg
ICAgICAgICByZXR1cm4gbmV3ICgmZ2xvYmFsRGF0YSkgTmF0aXZlRXhlY3V0YWJsZShnbG9iYWxE
YXRhLCBmdW5jdGlvbiwgY29uc3RydWN0b3IpOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMTE1
LDggKzExNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICNpZiBFTkFCTEUo
SklUKQotICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKEpJVENvZGUgY2FsbFRodW5rLCBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgSklUQ29kZSBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVuY3Rpb24g
Y29uc3RydWN0b3IpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKE5VTV9QQVJBTUVURVJT
X0lTX0hPU1QpCisgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKSVRDb2RlIGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEpJVENvZGUg
Y29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQorICAgICAgICAgICAg
OiBFeGVjdXRhYmxlQmFzZShnbG9iYWxEYXRhLmV4ZWN1dGFibGVTdHJ1Y3R1cmUsIE5VTV9QQVJB
TUVURVJTX0lTX0hPU1QpCiAgICAgICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAg
ICAgICAgICAsIG1fY29uc3RydWN0b3IoY29uc3RydWN0b3IpCiAgICAgICAgIHsKQEAgLTEyNiw4
ICsxMjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1faml0Q29kZUZvckNvbnN0
cnVjdFdpdGhBcml0eUNoZWNrID0gY29uc3RydWN0VGh1bmsuYWRkcmVzc0ZvckNhbGwoKTsKICAg
ICAgICAgfQogI2Vsc2UKLSAgICAgICAgTmF0aXZlRXhlY3V0YWJsZShOYXRpdmVGdW5jdGlvbiBm
dW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCi0gICAgICAgICAgICA6IEV4ZWN1
dGFibGVCYXNlKE5VTV9QQVJBTUVURVJTX0lTX0hPU1QpCisgICAgICAgIE5hdGl2ZUV4ZWN1dGFi
bGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0
aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCisgICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKGds
b2JhbERhdGEuZXhlY3V0YWJsZVN0cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNfSVNfSE9TVCkKICAg
ICAgICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKICAgICAgICAgICAgICwgbV9jb25zdHJ1
Y3Rvcihjb25zdHJ1Y3RvcikKICAgICAgICAgewpAQCAtMTQyLDggKzE0NCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgVlB0ckhhY2tFeGVjdXRhYmxlIDogcHVibGljIEV4ZWN1dGFi
bGVCYXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFZQdHJIYWNrRXhlY3V0YWJsZSgpCi0gICAg
ICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKE5VTV9QQVJBTUVURVJTX0lTX0hPU1QpCisgICAgICAg
IFZQdHJIYWNrRXhlY3V0YWJsZShQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQorICAg
ICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJTX0lTX0hP
U1QpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC0xNTIsOCArMTU0LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlIDogcHVibGljIEV4ZWN1dGFibGVC
YXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdEV4ZWN1dGFibGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENv
bnRleHQpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKE5VTV9QQVJBTUVURVJTX05PVF9D
T01QSUxFRCkKKyAgICAgICAgU2NyaXB0RXhlY3V0YWJsZShQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCkKKyAgICAgICAgICAgIDogRXhlY3V0YWJsZUJh
c2Uoc3RydWN0dXJlLCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQpCiAgICAgICAgICAgICAs
IG1fc291cmNlKHNvdXJjZSkKICAgICAgICAgICAgICwgbV9mZWF0dXJlcyhpc0luU3RyaWN0Q29u
dGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogMCkKICAgICAgICAgewpAQCAtMTY2LDggKzE2OCw4
IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAgICAgICAgIH0KIAotICAgICAgICBTY3JpcHRF
eGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29s
IGlzSW5TdHJpY3RDb250ZXh0KQotICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShOVU1fUEFS
QU1FVEVSU19OT1RfQ09NUElMRUQpCisgICAgICAgIFNjcmlwdEV4ZWN1dGFibGUoUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQpCisgICAgICAgICAgICA6IEV4ZWN1dGFi
bGVCYXNlKHN0cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEKQogICAgICAgICAg
ICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgICAgICAsIG1fZmVhdHVyZXMoaXNJblN0cmlj
dENvbnRleHQgPyBTdHJpY3RNb2RlRmVhdHVyZSA6IDApCiAgICAgICAgIHsKQEAgLTIyNyw3ICsy
MjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqbV9ldmFsQ29kZUJs
b2NrOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbEV4ZWN1dGFi
bGU+IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9v
bCBpc0luU3RyaWN0Q29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEV2YWxFeGVjdXRhYmxl
KGV4ZWMsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQpKTsgfQorICAgICAgICBzdGF0aWMgRXZh
bEV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCkgeyByZXR1cm4gbmV3IChleGVjKSBFdmFsRXhl
Y3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0KTsgfQogCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgSklUQ29kZSYgZ2VuZXJhdGVkSklUQ29kZSgpCkBAIC0yMzUsMjAgKzIz
NywyMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZWRKSVRD
b2RlRm9yQ2FsbCgpOwogICAgICAgICB9CiAjZW5kaWYKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUocHJvdG8sIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOyB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNNYXJrQ2hpbGRy
ZW4gfCBTY3JpcHRFeGVjdXRhYmxlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAgICAgRXZhbEV4ZWN1
dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wpOwogCiAgICAgICAgIEpT
T2JqZWN0KiBjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKIAogICAgICAgICBP
d25QdHI8RXZhbENvZGVCbG9jaz4gbV9ldmFsQ29kZUJsb2NrOwogICAgIH07CiAKICAgICBjbGFz
cyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2dyYW1FeGVjdXRhYmxlPiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAgICAgIHN0YXRp
YyBQcm9ncmFtRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNl
Q29kZSYgc291cmNlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFByb2dyYW1FeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSkpOworICAgICAgICAgICAgcmV0dXJuIG5l
dyAoZXhlYykgUHJvZ3JhbUV4ZWN1dGFibGUoZXhlYywgc291cmNlKTsKICAgICAgICAgfQogCiAg
ICAgICAgIH5Qcm9ncmFtRXhlY3V0YWJsZSgpOwpAQCAtMjc2LDExICsyODEsMTUgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsK
ICAgICAgICAgfQogI2VuZGlmCisgICAgICAgIAorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCwgMCk7IH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8
IFNjcmlwdEV4ZWN1dGFibGU6OlN0cnVjdHVyZUZsYWdzOwogICAgICAgICBQcm9ncmFtRXhlY3V0
YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAgSlNPYmplY3Qq
IGNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOworICAgICAgICB2
aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogCiAgICAgICAgIE93blB0cjxQ
cm9ncmFtQ29kZUJsb2NrPiBtX3Byb2dyYW1Db2RlQmxvY2s7CiAgICAgfTsKQEAgLTI4OCwxNCAr
Mjk3LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4g
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0
ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBpbnQgZmlyc3RMaW5lLCBp
bnQgbGFzdExpbmUpCisgICAgICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFy
YW1ldGVycywgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RM
aW5lKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZ1bmN0aW9u
RXhlY3V0YWJsZShleGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50cywgcGFyYW1l
dGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpKTsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgKGV4ZWMpIEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBuYW1lLCBzb3Vy
Y2UsIGZvcmNlVXNlc0FyZ3VtZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZp
cnN0TGluZSwgbGFzdExpbmUpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9y
Y2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJ
blN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKKyAgICAgICAgc3Rh
dGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZv
cmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGlz
SW5TdHJpY3RDb250ZXh0LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnVuY3Rpb25FeGVjdXRhYmxlKGdsb2Jh
bERhdGEsIG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJzLCBpc0lu
U3RyaWN0Q29udGV4dCwgZmlyc3RMaW5lLCBsYXN0TGluZSkpOworICAgICAgICAgICAgcmV0dXJu
IG5ldyAoZ2xvYmFsRGF0YSkgRnVuY3Rpb25FeGVjdXRhYmxlKGdsb2JhbERhdGEsIG5hbWUsIHNv
dXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJzLCBpc0luU3RyaWN0Q29udGV4dCwg
Zmlyc3RMaW5lLCBsYXN0TGluZSk7CiAgICAgICAgIH0KIAogICAgICAgICB+RnVuY3Rpb25FeGVj
dXRhYmxlKCk7CkBAIC0zNjMsOCArMzcyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNo
YXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sVGFi
bGU7IH0KIAogICAgICAgICB2b2lkIGRpc2NhcmRDb2RlKCk7Ci0gICAgICAgIHZvaWQgbWFya0Fn
Z3JlZ2F0ZShNYXJrU3RhY2smKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25F
eGVjdXRhYmxlPiBmcm9tR2xvYmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlKiwg
RGVidWdnZXIqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqKiBleGNlcHRpb24pOworICAg
ICAgICB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKKyAgICAgICAgc3RhdGljIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0
ZSosIERlYnVnZ2VyKiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsK
KyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNW
YWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUocHJvdG8sIFR5cGVJbmZvKENv
bXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOyB9CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUoSlNHbG9iYWxEYXRhKiwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgZm9yY2VVc2Vz
QXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBib29sLCBpbnQgZmlyc3RMaW5lLCBpbnQg
bGFzdExpbmUpOwpAQCAtMzcyLDcgKzM4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IEpTT2JqZWN0KiBjb21waWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5O
b2RlKik7CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhl
Y1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKLQorICAgICAgICAKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgU2Ny
aXB0RXhlY3V0YWJsZTo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIHVuc2lnbmVkIG1fbnVtQ2Fw
dHVyZWRWYXJpYWJsZXMgOiAzMTsKICAgICAgICAgYm9vbCBtX2ZvcmNlVXNlc0FyZ3VtZW50cyA6
IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAKaW5kZXggZTY0MjU5NDg3OTEwM2RjNDg2ODNhZjY0MjQ2MDEwZGU1NDE1
ZGY2Ni4uNTczYmQ1YjRlODlkYzIzNDQ5NmM1YjRmMDA3NDBkOTg1NDI5NjUzMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaQogICAgIEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpOwogICAgIFNv
dXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShwcm9ncmFtLCBzb3VyY2VVUkwsIGxpbmVOdW1i
ZXIpOwogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSAwOwotICAgIFJlZlB0cjxGdW5jdGlvbkV4
ZWN1dGFibGU+IGZ1bmN0aW9uID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShm
dW5jdGlvbk5hbWUsIGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIo
KSwgc291cmNlLCAmZXhjZXB0aW9uKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
ID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShmdW5jdGlvbk5hbWUsIGV4ZWMs
IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSwgc291cmNlLCAmZXhjZXB0
aW9uKTsKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChleGNlcHRpb24pOwog
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBleGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9IZWFwLmNwcAppbmRleCBjNTJiY2ZlNmM2YzQxN2VjMjFmNDU1NGM1ZmMy
YWRmNTFiYjRhZmE2Li4xNzgxNTgyNDk4ZGMxOGViZDIzODU2NDhiMzNjMDY1MGJjMGU4MzZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcApAQCAtNzUsNiArNzUsMTAgQEAg
dm9pZCBIZWFwOjpkZXN0cm95KCkKICAgICAvLyAoYW5kIHRodXMgdGhlIGdsb2JhbCBkYXRhKSBi
ZWZvcmUgb3RoZXIgb2JqZWN0cyB0aGF0IG1heSB1c2UgdGhlIGdsb2JhbCBkYXRhLgogICAgIFJl
ZlB0cjxKU0dsb2JhbERhdGE+IHByb3RlY3QobV9nbG9iYWxEYXRhKTsKIAorI2lmIEVOQUJMRShK
SVQpCisgICAgbV9nbG9iYWxEYXRhLT5qaXRTdHVicy0+Y2xlYXJIb3N0RnVuY3Rpb25TdHVicygp
OworI2VuZGlmCisKICAgICBkZWxldGUgbV9tYXJrTGlzdFNldDsKICAgICBtX21hcmtMaXN0U2V0
ID0gMDsKICAgICBtX21hcmtlZFNwYWNlLmNsZWFyTWFya3MoKTsKQEAgLTIyMSwxMSArMjI1LDYg
QEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogICAgIC8vIE1hcmsgdGVtcG9yYXJ5IHZlY3RvciBm
b3IgQXJyYXkgc29ydGluZwogICAgIG1hcmtUZW1wU29ydFZlY3RvcnMobWFya1N0YWNrKTsKICAg
ICBtYXJrU3RhY2suZHJhaW4oKTsKLSAgICAKLSAgICBIYXNoU2V0PEdsb2JhbENvZGVCbG9jayo+
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NvZGVCbG9ja3MuZW5kKCk7Ci0gICAgZm9yIChIYXNo
U2V0PEdsb2JhbENvZGVCbG9jayo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fY29kZUJsb2Nrcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5tYXJrQWdncmVnYXRlKG1h
cmtTdGFjayk7Ci0gICAgbWFya1N0YWNrLmRyYWluKCk7CiAKICAgICAvLyBNYXJrIG1pc2MuIG90
aGVyIHJvb3RzLgogICAgIGlmIChtX21hcmtMaXN0U2V0ICYmIG1fbWFya0xpc3RTZXQtPnNpemUo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuaAppbmRleCBlYjhhZjcwY2UzNzUyMTU2
MWY4MTNlMDZmZWRmZTA4MDg3ZGFjN2MxLi40MDgwOGZkNmQ0MTlkMTliZTA0ZWUxYzhmMWZhYjA3
MTNiZjk3NDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5oCkBAIC05Miw5ICs5
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgcHVzaFRlbXBTb3J0VmVjdG9y
KFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXI+Kik7CiAgICAgICAgIHZvaWQgcG9wVGVtcFNvcnRWZWN0
b3IoVmVjdG9yPFZhbHVlU3RyaW5nUGFpcj4qKTsKLSAgICAgICAgCi0gICAgICAgIEhhc2hTZXQ8
R2xvYmFsQ29kZUJsb2NrKj4mIGNvZGVCbG9ja3MoKSB7IHJldHVybiBtX2NvZGVCbG9ja3M7IH0K
LQorICAgIAogICAgICAgICBIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4mIG1hcmtMaXN0
U2V0KCkgeyBpZiAoIW1fbWFya0xpc3RTZXQpIG1fbWFya0xpc3RTZXQgPSBuZXcgSGFzaFNldDxN
YXJrZWRBcmd1bWVudEJ1ZmZlcio+OyByZXR1cm4gKm1fbWFya0xpc3RTZXQ7IH0KICAgICAgICAg
CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2goRnVuY3Rv
ciYpOwpAQCAtMTI0LDcgKzEyMiw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFByb3Rl
Y3RDb3VudFNldCBtX3Byb3RlY3RlZFZhbHVlczsKICAgICAgICAgVmVjdG9yPFZlY3RvcjxWYWx1
ZVN0cmluZ1BhaXI+KiA+IG1fdGVtcFNvcnRpbmdWZWN0b3JzOwotICAgICAgICBIYXNoU2V0PEds
b2JhbENvZGVCbG9jayo+IG1fY29kZUJsb2NrczsKIAogICAgICAgICBIYXNoU2V0PE1hcmtlZEFy
Z3VtZW50QnVmZmVyKj4qIG1fbWFya0xpc3RTZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IGViOWM3YzE1OTA1YzcwOGFiMDI4Njg2
NTI2MDMwZjE5MGNmN2I3NTQuLjk5MTBjMDlmYjA4MzZjMGQwN2MxYjhhNmQ5NGZjZWExNGVmYzUx
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNw
cApAQCAtMzksOCArMzksOCBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTQWN0aXZhdGlv
bik7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0FjdGl2YXRpb246OnNfaW5mbyA9IHsgIkpTQWN0aXZh
dGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAgfTsKIAotSlNBY3RpdmF0aW9uOjpKU0FjdGl2YXRp
b24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIE5vbk51bGxQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0
YWJsZT4gZnVuY3Rpb25FeGVjdXRhYmxlKQotICAgIDogQmFzZShjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKS5hY3RpdmF0aW9uU3RydWN0dXJlLCBuZXcgSlNBY3RpdmF0aW9uRGF0YShmdW5jdGlvbkV4
ZWN1dGFibGUsIGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKQorSlNBY3RpdmF0aW9uOjpKU0FjdGl2
YXRpb24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlKQorICAgIDogQmFzZShjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5hY3RpdmF0aW9u
U3RydWN0dXJlLCBuZXcgSlNBY3RpdmF0aW9uRGF0YShjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwg
dGhpcywgZnVuY3Rpb25FeGVjdXRhYmxlLCBjYWxsRnJhbWUtPnJlZ2lzdGVycygpKSkKIHsKICAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQpAQCAtNTMsNiArNTMsNyBAQCBKU0FjdGl2
YXRpb246On5KU0FjdGl2YXRpb24oKQogdm9pZCBKU0FjdGl2YXRpb246Om1hcmtDaGlsZHJlbihN
YXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNr
KTsKKyAgICBtYXJrU3RhY2suYXBwZW5kKCZkKCktPmZ1bmN0aW9uRXhlY3V0YWJsZSk7CiAKICAg
ICAvLyBObyBuZWVkIHRvIG1hcmsgb3VyIHJlZ2lzdGVycyBpZiB0aGV5J3JlIHN0aWxsIGluIHRo
ZSBSZWdpc3RlckZpbGUuCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlckFycmF5
ID0gZCgpLT5yZWdpc3RlckFycmF5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FjdGl2YXRpb24uaAppbmRleCA2ZTA0MDQxNjI4MGNiN2QwNzRlMmY3YWJhMDBkZDk0
MjY4ZjUzMmYyLi4yNzAwNGE5MzRiZmE2NDIzNmQwODkwODFkOWViNGRiZDk3Y2NmY2MyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaApAQCAtNDIsNyAr
NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0FjdGl2YXRpb24gOiBwdWJsaWMg
SlNWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgIHR5cGVkZWYgSlNWYXJpYWJsZU9iamVjdCBCYXNl
OwogICAgIHB1YmxpYzoKLSAgICAgICAgSlNBY3RpdmF0aW9uKENhbGxGcmFtZSosIE5vbk51bGxQ
YXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4pOworICAgICAgICBKU0FjdGl2YXRpb24oQ2Fs
bEZyYW1lKiwgRnVuY3Rpb25FeGVjdXRhYmxlKik7CiAgICAgICAgIHZpcnR1YWwgfkpTQWN0aXZh
dGlvbigpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7
CkBAIC03Myw5ICs3Myw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgc3RydWN0IEpTQWN0aXZhdGlvbkRhdGEgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdERhdGEg
ewotICAgICAgICAgICAgSlNBY3RpdmF0aW9uRGF0YShOb25OdWxsUGFzc1JlZlB0cjxGdW5jdGlv
bkV4ZWN1dGFibGU+IF9mdW5jdGlvbkV4ZWN1dGFibGUsIFJlZ2lzdGVyKiByZWdpc3RlcnMpCisg
ICAgICAgICAgICBKU0FjdGl2YXRpb25EYXRhKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNB
Y3RpdmF0aW9uKiBhY3RpdmF0aW9uLCBGdW5jdGlvbkV4ZWN1dGFibGUqIF9mdW5jdGlvbkV4ZWN1
dGFibGUsIFJlZ2lzdGVyKiByZWdpc3RlcnMpCiAgICAgICAgICAgICAgICAgOiBKU1ZhcmlhYmxl
T2JqZWN0RGF0YShfZnVuY3Rpb25FeGVjdXRhYmxlLT5zeW1ib2xUYWJsZSgpLCByZWdpc3RlcnMp
Ci0gICAgICAgICAgICAgICAgLCBmdW5jdGlvbkV4ZWN1dGFibGUoX2Z1bmN0aW9uRXhlY3V0YWJs
ZSkKKyAgICAgICAgICAgICAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBhY3Rp
dmF0aW9uLCBfZnVuY3Rpb25FeGVjdXRhYmxlKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIC8vIFdlIGhhdmUgdG8gbWFudWFsbHkgcmVmIGFuZCBkZXJlZiB0aGUgc3ltYm9sIHRhYmxl
IGFzIEpTVmFyaWFibGVPYmplY3REYXRhCiAgICAgICAgICAgICAgICAgLy8gZG9lc24ndCBrbm93
IGFib3V0IFNoYXJlZFN5bWJvbFRhYmxlCkBAIC04Niw3ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZFN5bWJvbFRhYmxlKj4oc3ltYm9s
VGFibGUpLT5kZXJlZigpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSZWZQdHI8RnVu
Y3Rpb25FeGVjdXRhYmxlPiBmdW5jdGlvbkV4ZWN1dGFibGU7CisgICAgICAgICAgICBXcml0ZUJh
cnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPiBmdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgICAgIH07
CiAKICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDczMTNk
NTI1MjQ1MzY0MjVjNDQxOWUwNjRjNjIyYmM4MWYxMGRhNjQuLjU0ZWUwMThiNzcyNTY1NDg1Y2U0
OTgyZDZhMDc5YWEwOTA3MmVmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShKU0NlbGwpOwogI2VuZGlmCiAKKyAgICAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1
dGFibGVCYXNlOwogICAgICAgICBmcmllbmQgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAgICAgICBm
cmllbmQgY2xhc3MgSGVhcDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMmFkZTQ0MTVkYzhhMjM1
MzQxZmEwYjI3OTIxMjhjNTg4MDg2MTgwNi4uOGU3NzQ3YjkxYTBjNWY4NDc0ZWQyMGU0MDk1YTJh
NWI5MDVmMWRjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKQEAgLTU2LDE2ICs1NiwxNiBAQCBib29sIEpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9u
Tm9uSW5saW5lKCkgY29uc3QKICAgICByZXR1cm4gaXNIb3N0RnVuY3Rpb24oKTsKIH0KIAotSlNG
dW5jdGlvbjo6SlNGdW5jdGlvbihOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZSkKK0pTRnVuY3Rpb246OkpTRnVuY3Rpb24oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBz
dHJ1Y3R1cmUsIFZQdHJIYWNrRXhlY3V0YWJsZSogZXhlY3V0YWJsZSkKICAgICA6IEJhc2Uoc3Ry
dWN0dXJlKQotICAgICwgbV9leGVjdXRhYmxlKGFkb3B0UmVmKG5ldyBWUHRySGFja0V4ZWN1dGFi
bGUoKSkpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBtX2V4ZWN1dGFi
bGUuc2V0V2l0aG91dFdyaXRlQmFycmllcihleGVjdXRhYmxlKTsKIH0KIAotSlNGdW5jdGlvbjo6
SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBQYXNzUmVmUHRyPE5hdGl2ZUV4ZWN1dGFibGU+IHRodW5rKQor
SlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBpbnQg
bGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVjdXRhYmxlKiB0aHVuaykK
ICAgICA6IEJhc2UoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2V4ZWN1dGFibGUo
dGh1bmspCisgICAgLCBtX2V4ZWN1dGFibGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB0aHVu
aykKICAgICAsIG1fc2NvcGVDaGFpbihleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGdsb2JhbE9i
amVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZv
KSk7CkBAIC03NSw3ICs3NSw3IEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzCiAKIEpTRnVuY3Rp
b246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgaW50IGxlbmd0aCwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKICAgICA6IEJhc2Uo
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2V4ZWN1dGFibGUoZXhlYy0+Z2xvYmFs
RGF0YSgpLmdldEhvc3RGdW5jdGlvbihmdW5jKSkKKyAgICAsIG1fZXhlY3V0YWJsZShleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rpb24oZnVu
YykpCiAgICAgLCBtX3Njb3BlQ2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBnbG9iYWxP
YmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5m
bykpOwpAQCAtODMsOSArODMsOSBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhcwogICAgIHB1dERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpz
TnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAot
SlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRy
PEZ1bmN0aW9uRXhlY3V0YWJsZT4gZXhlY3V0YWJsZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hh
aW5Ob2RlKQorSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlKQog
ICAgIDogQmFzZShzY29wZUNoYWluTm9kZS0+Z2xvYmFsT2JqZWN0LmdldCgpLCBzY29wZUNoYWlu
Tm9kZS0+Z2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKQotICAgICwgbV9leGVjdXRh
YmxlKGV4ZWN1dGFibGUpCisgICAgLCBtX2V4ZWN1dGFibGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBleGVjdXRhYmxlKQogICAgICwgbV9zY29wZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgc2NvcGVDaGFpbk5vZGUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
QEAgLTk2LDE5ICs5Niw2IEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVj
LCBOb25OdWxsUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IGV4CiBKU0Z1bmN0aW9uOjp+
SlNGdW5jdGlvbigpCiB7CiAgICAgQVNTRVJUKHZwdHIoKSA9PSBKU0dsb2JhbERhdGE6OmpzRnVu
Y3Rpb25WUHRyKTsKLQotICAgIC8vIEpJVCBjb2RlIGZvciBvdGhlciBmdW5jdGlvbnMgbWF5IGhh
dmUgaGFkIGNhbGxzIGxpbmtlZCBkaXJlY3RseSB0byB0aGUgY29kZSBmb3IgdGhpcyBmdW5jdGlv
bjsgdGhlc2UgbGlua3MKLSAgICAvLyBhcmUgYmFzZWQgb24gYSBjaGVjayBmb3IgdGhlIHRoaXMg
cG9pbnRlciB2YWx1ZSBmb3IgdGhpcyBKU0Z1bmN0aW9uIC0gd2hpY2ggd2lsbCBubyBsb25nZXIg
YmUgdmFsaWQgb25jZQotICAgIC8vIHRoaXMgbWVtb3J5IGlzIGZyZWVkIGFuZCBtYXkgYmUgcmV1
c2VkIChwb3RlbnRpYWxseSBmb3IgYW5vdGhlciwgZGlmZmVyZW50IEpTRnVuY3Rpb24pLgotICAg
IGlmICghaXNIb3N0RnVuY3Rpb24oKSkgewotI2lmIEVOQUJMRShKSVRfT1BUSU1JWkVfQ0FMTCkK
LSAgICAgICAgQVNTRVJUKG1fZXhlY3V0YWJsZSk7Ci0gICAgICAgIGlmIChqc0V4ZWN1dGFibGUo
KS0+aXNHZW5lcmF0ZWRGb3JDYWxsKCkpCi0gICAgICAgICAgICBqc0V4ZWN1dGFibGUoKS0+Z2Vu
ZXJhdGVkQnl0ZWNvZGVGb3JDYWxsKCkudW5saW5rQ2FsbGVycygpOwotICAgICAgICBpZiAoanNF
eGVjdXRhYmxlKCktPmlzR2VuZXJhdGVkRm9yQ29uc3RydWN0KCkpCi0gICAgICAgICAgICBqc0V4
ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3JDb25zdHJ1Y3QoKS51bmxpbmtDYWxsZXJz
KCk7Ci0jZW5kaWYKLSAgICB9CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBTdHJpY3RNb2RlQ2Fs
bGVyQWNjZXNzRXJyb3IgPSAiQ2Fubm90IGFjY2VzcyBjYWxsZXIgcHJvcGVydHkgb2YgYSBzdHJp
Y3QgbW9kZSBmdW5jdGlvbiI7CkBAIC0xNDgsOCArMTM1LDggQEAgY29uc3QgVVN0cmluZyBKU0Z1
bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogdm9pZCBKU0Z1
bmN0aW9uOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgQmFzZTo6
bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9leGVjdXRh
YmxlKTsKICAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAganNFeGVjdXRhYmxl
KCktPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgm
bV9zY29wZUNoYWluKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKaW5kZXggMDg5ZjQyZTJjMjNiOTgxMTIyZTIyYzIyYTIwYjgzYzBmMDE2M2Jj
MS4uNmJjM2U4M2QxMDMwNmI4YmI0ZmNmMGE0NWUwZmRhN2RkYmUxYzQwYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMzQsNiArMzQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxP
YmplY3Q7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKKyAgICBjbGFzcyBWUHRySGFja0V4
ZWN1dGFibGU7CiAKICAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVu
Y3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCkBAIC00NSw4ICs0Niw4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgcHVibGljOgogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0
aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKLSAgICAgICAgSlNGdW5jdGlv
bihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4sIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBQYXNzUmVmUHRyPE5hdGl2ZUV4ZWN1
dGFibGU+KTsKLSAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0
cjxGdW5jdGlvbkV4ZWN1dGFibGU+LCBTY29wZUNoYWluTm9kZSopOworICAgICAgICBKU0Z1bmN0
aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUV4ZWN1dGFibGUqKTsK
KyAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBTY29w
ZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIH5KU0Z1bmN0aW9uKCk7CiAKICAgICAgICAg
Y29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsKQEAgLTg2LDcgKzg3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92
ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVj
dDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU0Z1bmN0aW9uKE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOworICAgICAgICBKU0Z1bmN0aW9uKE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4sIFZQdHJIYWNrRXhlY3V0YWJsZSopOwogCiAgICAgICAgIGJv
b2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIApAQCAtMTAyLDcgKzEwMyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsZXJHZXR0ZXIoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBzdGF0aWMgSlNW
YWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYp
OwogCi0gICAgICAgIFJlZlB0cjxFeGVjdXRhYmxlQmFzZT4gbV9leGVjdXRhYmxlOworICAgICAg
ICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fZXhlY3V0YWJsZTsKICAgICAgICAgV3Jp
dGVCYXJyaWVyPFNjb3BlQ2hhaW5Ob2RlPiBtX3Njb3BlQ2hhaW47CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKaW5kZXggZTI1MDQw
YzM3OWIyZjJhYTM0MjY3ZDMxZjY1Mjk1OGRlMWEwZTRjYy4uYWY0NDRkNTc5YWM0MjVmZjFiMTRk
MDEyOWQ4NzljZTBkNDU5NTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuY3BwCkBAIC0xMDcsNyArMTA3LDkgQEAgdm9pZCBKU0dsb2JhbERhdGE6
OnN0b3JlVlB0cnMoKQogICAgIGpzU3RyaW5nLT5+SlNDZWxsKCk7CiAKICAgICBDT01QSUxFX0FT
U0VSVChzaXplb2YoSlNGdW5jdGlvbikgPD0gc2l6ZW9mKHN0b3JhZ2UpLCBzaXplb2ZfSlNGdW5j
dGlvbl9tdXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdlKTsKLSAgICBKU0NlbGwqIGpzRnVuY3Rpb24g
PSBuZXcgKHN0b3JhZ2UpIEpTRnVuY3Rpb24oSlNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGpz
TnVsbCgpKSk7CisgICAgY2hhciBleGVjdXRhYmxlU3RvcmFnZVtzaXplb2YoVlB0ckhhY2tFeGVj
dXRhYmxlKV07CisgICAgVlB0ckhhY2tFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChleGVj
dXRhYmxlU3RvcmFnZSkgVlB0ckhhY2tFeGVjdXRhYmxlKFZQdHJIYWNrRXhlY3V0YWJsZTo6Y3Jl
YXRlU3RydWN0dXJlKGpzTnVsbCgpKSk7CisgICAgSlNDZWxsKiBqc0Z1bmN0aW9uID0gbmV3IChz
dG9yYWdlKSBKU0Z1bmN0aW9uKEpTRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSks
IGV4ZWN1dGFibGUpOwogICAgIEpTR2xvYmFsRGF0YTo6anNGdW5jdGlvblZQdHIgPSBqc0Z1bmN0
aW9uLT52cHRyKCk7CiAgICAganNGdW5jdGlvbi0+fkpTQ2VsbCgpOwogfQpAQCAtMTM1LDYgKzEz
NywxMCBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSBnbG9iYWxE
YXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZAogICAgICwgZ2V0dGVyU2V0dGVyU3RydWN0
dXJlKEdldHRlclNldHRlcjo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAsIGFwaVdy
YXBwZXJTdHJ1Y3R1cmUoSlNBUElWYWx1ZVdyYXBwZXI6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwo
KSkpCiAgICAgLCBzY29wZUNoYWluTm9kZVN0cnVjdHVyZShTY29wZUNoYWluTm9kZTo6Y3JlYXRl
U3RydWN0dXJlKGpzTnVsbCgpKSkKKyAgICAsIGV4ZWN1dGFibGVTdHJ1Y3R1cmUoRXhlY3V0YWJs
ZUJhc2U6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCisgICAgLCBldmFsRXhlY3V0YWJsZVN0
cnVjdHVyZShFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKKyAgICAs
IHByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlKFByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1
Y3R1cmUoanNOdWxsKCkpKQorICAgICwgZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlKEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAsIGR1bW15TWFy
a2FibGVDZWxsU3RydWN0dXJlKEpTQ2VsbDo6Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUoKSkKICAgICAs
IGlkZW50aWZpZXJUYWJsZShnbG9iYWxEYXRhVHlwZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0
YSgpLmN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSA6IGNyZWF0ZUlkZW50aWZpZXJUYWJsZSgpKQog
ICAgICwgcHJvcGVydHlOYW1lcyhuZXcgQ29tbW9uSWRlbnRpZmllcnModGhpcykpCkBAIC0yODIs
MTggKzI4OCwxOCBAQCBKU0dsb2JhbERhdGEqJiBKU0dsb2JhbERhdGE6OnNoYXJlZEluc3RhbmNl
SW50ZXJuYWwoKQogfQogCiAjaWYgRU5BQkxFKEpJVCkKLVBhc3NSZWZQdHI8TmF0aXZlRXhlY3V0
YWJsZT4gSlNHbG9iYWxEYXRhOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rp
b24pCitOYXRpdmVFeGVjdXRhYmxlKiBKU0dsb2JhbERhdGE6OmdldEhvc3RGdW5jdGlvbihOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICByZXR1cm4gaml0U3R1YnMtPmhvc3RGdW5jdGlv
blN0dWIodGhpcywgZnVuY3Rpb24pOwogfQotUGFzc1JlZlB0cjxOYXRpdmVFeGVjdXRhYmxlPiBK
U0dsb2JhbERhdGE6OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1
bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQorTmF0aXZlRXhlY3V0YWJsZSogSlNHbG9iYWxEYXRhOjpn
ZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yIGdl
bmVyYXRvcikKIHsKICAgICByZXR1cm4gaml0U3R1YnMtPmhvc3RGdW5jdGlvblN0dWIodGhpcywg
ZnVuY3Rpb24sIGdlbmVyYXRvcik7CiB9CiAjZWxzZQotUGFzc1JlZlB0cjxOYXRpdmVFeGVjdXRh
YmxlPiBKU0dsb2JhbERhdGE6OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlv
bikKK05hdGl2ZUV4ZWN1dGFibGUqIEpTR2xvYmFsRGF0YTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2
ZUZ1bmN0aW9uIGZ1bmN0aW9uKQogewotICAgIHJldHVybiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVh
dGUoZnVuY3Rpb24sIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKTsKKyAgICByZXR1cm4g
TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp0aGlzLCBmdW5jdGlvbiwgY2FsbEhvc3RGdW5jdGlv
bkFzQ29uc3RydWN0b3IpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmgKaW5kZXggZWUzZTA2NzE2MTllZTM4MmEzMzgyMjNjY2M2N2Zm
OThiZDRlMWM5YS4uNTUzMjMzZGY3M2FhODZkYTZkMTk2MDcwZTMzMjg0YzJhMGIwZjZlYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTE1NSw2
ICsxNTUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGdl
dHRlclNldHRlclN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gYXBpV3JhcHBl
clN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc2NvcGVDaGFpbk5vZGVTdHJ1
Y3R1cmU7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGV4ZWN1dGFibGVTdHJ1Y3R1cmU7Cisg
ICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGV2YWxFeGVjdXRhYmxlU3RydWN0dXJlOworICAgICAg
ICBSZWZQdHI8U3RydWN0dXJlPiBwcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZTsKKyAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgICAgICBS
ZWZQdHI8U3RydWN0dXJlPiBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZTsKIAogICAgICAgICBz
dGF0aWMgdm9pZCBzdG9yZVZQdHJzKCk7CkBAIC0xOTksOSArMjAzLDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBqaXRTdHVicy0+Y3RpU3R1Yih0aGlz
LCBnZW5lcmF0b3IpOwogICAgICAgICB9Ci0gICAgICAgIFBhc3NSZWZQdHI8TmF0aXZlRXhlY3V0
YWJsZT4gZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvcik7Cisg
ICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwg
VGh1bmtHZW5lcmF0b3IpOwogI2VuZGlmCi0gICAgICAgIFBhc3NSZWZQdHI8TmF0aXZlRXhlY3V0
YWJsZT4gZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAgTmF0aXZlRXhl
Y3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uKTsKIAogICAgICAgICBUaW1l
b3V0Q2hlY2tlciB0aW1lb3V0Q2hlY2tlcjsKICAgICAgICAgVGVybWluYXRvciB0ZXJtaW5hdG9y
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IGRlMTMwMGFkNTQyMDlkOTEyMTc4Yjg3ZmI0NWM3YzYz
MDMzMmNiZDYuLmYwZGE3NzM3Y2NjNjFiNjZhNzI5N2Y2ZmM4MzgyZDVjZjBiM2Q2OGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHAKQEAgLTQ0OSwxMiArNDQ5LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChKU1ZhbHVl
IHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShwYXJzZWRPYmplY3QpOwogCi0gICAgUmVmUHRyPEV2YWxFeGVj
dXRhYmxlPiBldmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKHMp
LCBmYWxzZSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKGV4ZWMsIG1ha2VTb3VyY2UocyksIGZhbHNlKTsKICAgICBKU09iamVjdCogZXJyb3IgPSBl
dmFsLT5jb21waWxlKGV4ZWMsIHN0YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4odW53cmFwcGVk
T2JqZWN0KS0+Z2xvYmFsU2NvcGVDaGFpbigpKTsKICAgICBpZiAoZXJyb3IpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShleGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlKGV2YWwuZ2V0KCksIGV4ZWMsIHRoaXNP
YmplY3QsIHN0YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4odW53cmFwcGVkT2JqZWN0KS0+Z2xv
YmFsU2NvcGVDaGFpbigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5pbnRl
cnByZXRlcigpLT5leGVjdXRlKGV2YWwsIGV4ZWMsIHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PEpT
R2xvYmFsT2JqZWN0Kj4odW53cmFwcGVkT2JqZWN0KS0+Z2xvYmFsU2NvcGVDaGFpbigpKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1BhcnNlSW50KEV4ZWNT
dGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApp
bmRleCBmYjhhOTY3OGJiOTA0MTU4NjAyMzFhNGZhNDhjNTg0ZmZiYzJlNDQzLi44MGZhMTA1ODI2
YzBjYzE4MzQwYjU5MTc4ZTAzZWVhYTFhNjBmNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTT2JqZWN0KTsKIEFTU0VSVF9DTEFTU19GSVRT
X0lOX0NFTEwoSlNOb25GaW5hbE9iamVjdCk7Ci1BU1NFUlRfQ0xBU1NfRklMTFNfQ0VMTChKU0Zp
bmFsT2JqZWN0KTsKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNGaW5hbE9iamVjdCk7CiAK
IGNvbnN0IGNoYXIqIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvciA9ICJBdHRl
bXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKaW5kZXgg
NzI3YWMyODEyZWYxMDZjY2JjZTA2MWVkYmRkY2UwOTZmZTZhYWYwMC4uMGNhYmFlZjYwYzZlYWNh
M2NjNjY3Yjc4MWNlZWVhYTQ5MWM4MDE1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAg
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1N0YXRpY1Njb3BlT2JqZWN0KTsKIHZvaWQgSlNT
dGF0aWNTY29wZU9iamVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewog
ICAgIEpTVmFyaWFibGVPYmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwotICAgIG1hcmtT
dGFjay5kZXByZWNhdGVkQXBwZW5kKCZkKCktPnJlZ2lzdGVyU3RvcmUpOworICAgIG1hcmtTdGFj
ay5hcHBlbmQoJmQoKS0+cmVnaXN0ZXJTdG9yZSk7CiB9CiAKIEpTT2JqZWN0KiBKU1N0YXRpY1Nj
b3BlT2JqZWN0Ojp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCmluZGV4
IGIzYzA2OTUzMDkyNTZjMDFmYzkxNTE0YTUxMTJiMzdmOGZhMTJlZDYuLmM2YWM3NWFhMjNiYmJm
ODU3ZjU4ZTc3ZmYyZGU4MDAyNzU5ZWQ4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKQEAgLTM1LDE4ICszNSwxOCBAQCBu
YW1lc3BhY2UgSlNDewogICAgICAgICB1c2luZyBKU1ZhcmlhYmxlT2JqZWN0OjpKU1ZhcmlhYmxl
T2JqZWN0RGF0YTsKICAgICAgICAgc3RydWN0IEpTU3RhdGljU2NvcGVPYmplY3REYXRhIDogcHVi
bGljIEpTVmFyaWFibGVPYmplY3REYXRhIHsKICAgICAgICAgICAgIEpTU3RhdGljU2NvcGVPYmpl
Y3REYXRhKCkKLSAgICAgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3REYXRhKCZzeW1ib2xU
YWJsZSwgJnJlZ2lzdGVyU3RvcmUgKyAxKQorICAgICAgICAgICAgICAgIDogSlNWYXJpYWJsZU9i
amVjdERhdGEoJnN5bWJvbFRhYmxlLCByZWludGVycHJldF9jYXN0PFJlZ2lzdGVyKj4oJnJlZ2lz
dGVyU3RvcmUgKyAxKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IFN5bWJvbFRhYmxlIHN5bWJvbFRhYmxlOwotICAgICAgICAgICAgUmVnaXN0ZXIgcmVnaXN0ZXJT
dG9yZTsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiByZWdpc3RlclN0b3JlOwog
ICAgICAgICB9OwogICAgICAgICAKICAgICBwdWJsaWM6CiAgICAgICAgIEpTU3RhdGljU2NvcGVP
YmplY3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKICAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVj
dChleGVjLT5nbG9iYWxEYXRhKCkuc3RhdGljU2NvcGVTdHJ1Y3R1cmUsIG5ldyBKU1N0YXRpY1Nj
b3BlT2JqZWN0RGF0YSgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBkKCktPnJlZ2lzdGVyU3Rv
cmUgPSB2YWx1ZTsKKyAgICAgICAgICAgIGQoKS0+cmVnaXN0ZXJTdG9yZS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZSgpLmFkZChp
ZGVudC5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoLTEsIGF0dHJpYnV0ZXMpKTsKICAgICAgICAg
fQogICAgICAgICB2aXJ0dWFsIH5KU1N0YXRpY1Njb3BlT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAKaW5kZXggYzBjNWYxMTYwYjNjNWQ1ZjZkOGU4
MWM1MGJhYjU4ZWQ5YTVlMjRiYS4uODZkY2M3MjZiMjU3MDdhY2U5ZmEwZGU2MDEyNzliZmM5YjRk
ODk5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmNwcApAQCAt
MzgsNyArMzgsNyBAQCBTdHJ1Y3R1cmUqIEpTWm9tYmllOjpsZWFrZWRab21iaWVTdHJ1Y3R1cmUo
KSB7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMDsKICAgICBpZiAoIXN0cnVj
dHVyZSkgewogICAgICAgICBTdHJ1Y3R1cmU6OnN0YXJ0SWdub3JpbmdMZWFrcygpOwotICAgICAg
ICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNyZWF0ZShqc051bGwoKSwgVHlwZUluZm8oVW5zcGVj
aWZpZWRUeXBlKSwgMCwgJmluZm8pLmxlYWtSZWYoKTsKKyAgICAgICAgc3RydWN0dXJlID0gU3Ry
dWN0dXJlOjpjcmVhdGUoanNOdWxsKCksIFR5cGVJbmZvKFVuc3BlY2lmaWVkVHlwZSksIDAsICZz
X2luZm8pLmxlYWtSZWYoKTsKICAgICAgICAgU3RydWN0dXJlOjpzdG9wSWdub3JpbmdMZWFrcygp
OwogICAgIH0KICAgICByZXR1cm4gc3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTWm9tYmllLmgKaW5kZXggNWZlNmI2ZGEyYjNkMjAxNjNlNGYyYmQwZmIzNmE5N2JlMWY2
MDQwZi4uMzcxNDQ2ZjI1ZjZhODAyNWM0ODUxOGU0MTI5ZTRhYmMyNjZkYTA2NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oCkBAIC02OCw3ICs2OCw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVy
ZShKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5v
bnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVu
KSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29u
c3QgQ2xhc3NJbmZvIHNfaW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcmtlZFNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJr
ZWRTcGFjZS5oCmluZGV4IDJlODg4ODc4MWQyODVhYzE5ZDAzYzgxODlhZmRhNTE2NTg0YmUxOGMu
LjA1NmZhNzMxMzZlNDExMDk3YWJiMTBhMTE0NmQxODNjOWFkM2UwMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuaApAQCAtNDgsNyArNDgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFya2VkU3BhY2UpOwog
ICAgIHB1YmxpYzoKICAgICAgICAgLy8gQ3VycmVudGx5IHB1YmxpYyBmb3IgdXNlIGluIGFzc2Vy
dGlvbnMuCi0gICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4Q2VsbFNpemUgPSA2NDsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDZWxsU2l6ZSA9IDI1NjsKIAogICAgICAgICBz
dGF0aWMgSGVhcCogaGVhcChKU0NlbGwqKTsKIAo=
</data>
<flag name="review"
          id="77134"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>