<?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>238485</bug_id>
          
          <creation_ts>2022-03-28 21:03:44 -0700</creation_ts>
          <short_desc>[JSC] Remove ExecutableToCodeBlockEdge</short_desc>
          <delta_ts>2022-03-31 17:34:18 -0700</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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1855900</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-28 21:03:44 -0700</bug_when>
    <thetext>[JSC] Remove ExecutableToCodeBlockEdge</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855901</commentid>
    <comment_count>1</comment_count>
      <attachid>455987</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-28 21:04:12 -0700</bug_when>
    <thetext>Created attachment 455987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856624</commentid>
    <comment_count>2</comment_count>
      <attachid>456188</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-30 17:35:03 -0700</bug_when>
    <thetext>Created attachment 456188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856631</commentid>
    <comment_count>3</comment_count>
      <attachid>456191</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-30 18:23:24 -0700</bug_when>
    <thetext>Created attachment 456191
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856643</commentid>
    <comment_count>4</comment_count>
      <attachid>456195</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-30 19:28:42 -0700</bug_when>
    <thetext>Created attachment 456195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856663</commentid>
    <comment_count>5</comment_count>
      <attachid>456197</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-30 20:40:00 -0700</bug_when>
    <thetext>Created attachment 456197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856676</commentid>
    <comment_count>6</comment_count>
      <attachid>456200</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-30 21:22:57 -0700</bug_when>
    <thetext>Created attachment 456200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856702</commentid>
    <comment_count>7</comment_count>
      <attachid>456206</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-31 00:05:54 -0700</bug_when>
    <thetext>Created attachment 456206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856894</commentid>
    <comment_count>8</comment_count>
      <attachid>456262</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-31 11:38:34 -0700</bug_when>
    <thetext>Created attachment 456262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856936</commentid>
    <comment_count>9</comment_count>
      <attachid>456262</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2022-03-31 13:13:56 -0700</bug_when>
    <thetext>Comment on attachment 456262
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=456262&amp;action=review

r=me with some comments.

&gt; Source/JavaScriptCore/heap/Heap.h:1075
&gt; +    struct ScriptExecutableSpaceAndSet {

Nit: Maybe this should be ScriptExecutableSpaceAndSets* since there&apos;s more than one set in here.

&gt; Source/JavaScriptCore/runtime/FunctionExecutable.cpp:76
&gt; +    // If either of CodeBlocks is not marked yet, we will run output-constraints.

Nit: If either CodeBlock is not marked yet

&gt; Source/JavaScriptCore/runtime/GlobalExecutable.cpp:46
&gt; +        // If the CodeBlocks is not marked yet, we will run output-constraints.

Nit: not plural. It should be CodeBlock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856941</commentid>
    <comment_count>10</comment_count>
      <attachid>456262</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-31 13:24:14 -0700</bug_when>
    <thetext>Comment on attachment 456262
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=456262&amp;action=review

Thank you!

&gt;&gt; Source/JavaScriptCore/heap/Heap.h:1075
&gt;&gt; +    struct ScriptExecutableSpaceAndSet {
&gt; 
&gt; Nit: Maybe this should be ScriptExecutableSpaceAndSets* since there&apos;s more than one set in here.

Right, fixed.

&gt;&gt; Source/JavaScriptCore/runtime/FunctionExecutable.cpp:76
&gt;&gt; +    // If either of CodeBlocks is not marked yet, we will run output-constraints.
&gt; 
&gt; Nit: If either CodeBlock is not marked yet

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/GlobalExecutable.cpp:46
&gt;&gt; +        // If the CodeBlocks is not marked yet, we will run output-constraints.
&gt; 
&gt; Nit: not plural. It should be CodeBlock.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857069</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-31 17:30:50 -0700</bug_when>
    <thetext>mac bots are getting stuck, and I cannot get it tested. Landing it since previous mac-wk2 was green (and mac-AS-debug-wk2 failures are fixed locally).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857070</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-31 17:33:46 -0700</bug_when>
    <thetext>Committed r292191 (249094@trunk): &lt;https://commits.webkit.org/249094@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857071</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-31 17:34:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/91136585&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455987</attachid>
            <date>2022-03-28 21:04:12 -0700</date>
            <delta_ts>2022-03-30 17:35:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238485-20220328210411.patch</filename>
            <type>text/plain</type>
            <size>38322</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxOTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
Mjc5MGE4YWMzMWFlZDdjYjI3MGNlMDY2MTc1MDhkNzRmYzY4NTI3Li44MmJiYzlkMzE0MmZiNjc5
Y2VkY2MyNTk4NDE1NGY1ZDc0ZTcxMDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMi0wMy0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg0ODUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL0V4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2UuY3BwOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U6OnZpc2l0T3V0cHV0Q29uc3RyYWludHNJbXBsKToKKyAgICAgICAgKEpTQzo6RXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6cnVuQ29uc3RyYWludCk6CisgICAgICAgICogYnl0ZWNv
ZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFw
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
ZGVsZXRlQWxsQ29kZUJsb2Nrcyk6CisgICAgICAgIChKU0M6OkhlYXA6OmRlbGV0ZUFsbFVubGlu
a2VkQ29kZUJsb2Nrcyk6CisgICAgICAgIChKU0M6OkhlYXA6OmFkZENvcmVDb25zdHJhaW50cyk6
CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6OlNwYWNlQW5kU2V0
OjpTZXRzOjpTZXRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6U3BhY2VBbmRTZXQ6OlNwYWNlQW5k
U2V0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6U3BhY2VBbmRTZXQ6OnNldCk6CisgICAgICAgIChK
U0M6OkhlYXA6OlNwYWNlQW5kU2V0OjpzZXRGb3IpOgorICAgICAgICAqIGhlYXAvSXNvQ2VsbFNl
dC5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRD
b2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZSk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbCk6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50c0lt
cGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnJ1bkNvbnN0cmFpbnQpOgor
ICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGU6OnJlcGxhY2VDb2RlQmxvY2tXaXRoKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjp0b1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpTY3JpcHRFeGVjdXRhYmxlOjpjbGVhckNvZGUpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVj
dXRhYmxlOjppbnN0YWxsQ29kZSk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omhh
c0NsZWFyYWJsZUNvZGUgY29uc3QpOgorCiAyMDIyLTAzLTI4ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFN0cmluZ1ZpZXcgZm9yIFlhcnIgLyBSZWd1bGFy
RXhwcmVzc2lvbiBwYXJzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IDZkOWQ4YjUxZTExOWRiYzA3ODA5MTE0ZTFjYjEwZWRiNjcyODQ1Nzgu
LmFmMTc5MjYwY2U0NmQyYzVkYmQ3ZTNjNzlkNjhhZDcxZDgzNzJjYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMDc5LDcgKzEwNzksNyBA
QCB2b2lkIENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihWaXNpdG9yJiB2aXNpdG9yKQogICAgIHN0
cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7CiAgICAgc3Ryb25n
bHlWaXNpdFdlYWtSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7CiAgICAgCi0gICAgSGVhcDo6
U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSkuYWRkKHRoaXMpOworICAgIEhlYXA6OkNv
ZGVCbG9ja1NwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkpLmFkZCh0aGlzKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTE2NjcsNyArMTY2Nyw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCiAgICAgfTsKICAgICB1cGRh
dGVBY3Rpdml0eSgpOwogCi0gICAgSGVhcDo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2Uo
KSkucmVtb3ZlKHRoaXMpOworICAgIEhlYXA6OkNvZGVCbG9ja1NwYWNlQW5kU2V0OjpzZXRGb3Io
KnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKIAogICAgIC8vIEluIENvZGVCbG9jazo6c2hvdWxk
VmlzaXRTdHJvbmdseSgpIHdlIG1heSBoYXZlIGRlY2lkZWQgdG8gc2tpcCB2aXNpdGluZyB0aGlz
CiAgICAgLy8gY29kZUJsb2NrLiBCeSB0aGUgdGltZSB3ZSBnZXQgaGVyZSwgd2UncmUgZG9uZSB3
aXRoIHRoZSB2ZXJpZmllciBHQy4gU28sIGxldCdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNDY5NjNkNzNkZTIzZTAxZmQxNTI1NDUxYTgzNDdiNmM3
NzVjMTgyNi4uNWQ5Yzk0M2VkMjgzMTE2Mjk1ZDgzMGQ2N2JhZjc1ZGE0ZjM5NDMxZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtODUwLDYgKzg1MCw3
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgQ29kZUJsb2NrU2V0OwogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOworICAgIGZyaWVuZCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPiBBTFdBWVNfSU5MSU5FIHZvaWQgdmlzaXRDaGlsZHJl
bihWaXNpdG9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcAppbmRleCAzNmRkYjdhNjY1Nzk5
YjY3NzY3YjMwNGZlNWYzNTg5NDdhZDQ3OTM2Li41MmVjMjBmMDRkYmYyNWRlNTcwM2VhMWQzOGVi
NjA4MjI3MGQwOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCkBAIC0xMTQsOCArMTE0LDgg
QEAgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp2aXNpdENoaWxkcmVuSW1wbChKU0Nl
bGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IKICAgICAvLyBub3QgeWV0IG1hcmtlZCBiZWNhdXNl
IGl0IHdlYWtseSBkZXBlbmRzIG9uIGEgc3RydWN0dXJlIHRoYXQgd2UgZGlkIG5vdCB5ZXQgbWFy
aywgdGhlbiB3ZQogICAgIC8vIHdpbGwga2VlcCBmaXhwb2ludGluZyB1bnRpbCB0aGUgZW5kLgog
ICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7
Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKS5hZGQo
ZWRnZSk7Ci0gICAgZWRnZS0+cnVuQ29uc3RyYWludChsb2NrZXIsIHZtLCB2aXNpdG9yKTsKKyAg
ICBpZiAoZWRnZS0+cnVuQ29uc3RyYWludChsb2NrZXIsIHZpc2l0b3IpKQorICAgICAgICB2bS5l
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cygpLmFkZChlZGdlKTsKIH0K
IAogREVGSU5FX1ZJU0lUX0NISUxEUkVOKEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpOwpAQCAt
MTI2LDcgKzEyNiw4IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRPdXRw
dXRDb25zdHJhaW50c0ltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yCiAgICAgVk0mIHZtID0gdmlz
aXRvci52bSgpOwogICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2UgPSBqc0Nhc3Q8
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSo+KGNlbGwpOwogICAgIAotICAgIGVkZ2UtPnJ1bkNv
bnN0cmFpbnQoTm9Mb2NraW5nTmVjZXNzYXJ5LCB2bSwgdmlzaXRvcik7CisgICAgaWYgKCFlZGdl
LT5ydW5Db25zdHJhaW50KE5vTG9ja2luZ05lY2Vzc2FyeSwgdmlzaXRvcikpCisgICAgICAgIHZt
LmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkucmVtb3ZlKGVkZ2Up
OwogfQogCiBERUZJTkVfVklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTKEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2UpOwpAQCAtMTkzLDE5ICsxOTQsMTggQEAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2MK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLXZvaWQgRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZTo6cnVuQ29uc3RyYWludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
Vk0mIHZtLCBWaXNpdG9yJiB2aXNpdG9yKQorYm9vbCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
OjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWaXNpdG9y
JiB2aXNpdG9yKQogewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2suZ2V0
KCk7CiAgICAgCiAgICAgY29kZUJsb2NrLT5wcm9wYWdhdGVUcmFuc2l0aW9ucyhsb2NrZXIsIHZp
c2l0b3IpOwogICAgIGNvZGVCbG9jay0+ZGV0ZXJtaW5lTGl2ZW5lc3MobG9ja2VyLCB2aXNpdG9y
KTsKIAotICAgIGlmICh2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZtLmV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkucmVtb3ZlKHRoaXMpOwor
ICAgIHJldHVybiAhdmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2spOwogfQogCi10ZW1wbGF0ZSB2
b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgVk0mLCBBYnN0cmFjdFNsb3RWaXNpdG9yJik7Ci10ZW1wbGF0ZSB2b2lk
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiwgVk0mLCBTbG90VmlzaXRvciYpOwordGVtcGxhdGUgYm9vbCBFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IEFic3RyYWN0U2xvdFZpc2l0b3ImKTsKK3RlbXBsYXRlIGJvb2wgRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZTo6cnVuQ29uc3RyYWludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTbG90Vmlz
aXRvciYpOwogCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKaW5kZXgg
NmNhNmY5YjRlOGUxYWFhMmU3MGEzZDAxY2YzOWYyOTY2YmM5MzQ2Mi4uMmNiNzZmZDk3OTEwOTk5
YzFlMjcyYzQxMGIzNWVmMTAxZDFhNjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCkBAIC04NCw3
ICs4NCw3IEBAIGNsYXNzIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UgZmluYWwgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICB2b2lkIGRlYWN0aXZhdGUoKTsKICAgICBib29sIGlzQWN0aXZlKCkgY29u
c3Q7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPiB2b2lkIHJ1bkNvbnN0cmFpbnQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBWaXNpdG9yJik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVmlzaXRvcj4gYm9vbCBydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIFZpc2l0b3ImKTsKIAogICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJs
b2NrOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDE3NWU1ZDU4MDNlYjM4ZDRj
YmZmM2NkNjZmYjI0N2YwMzQ3YjYwNmEuLmE3OWFmNmQ4NDI0ODk0YWZhYTZiYzIwZWIyOWY3NWVj
MWE2NDZhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMjUyLDcgKzI1Miw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1
bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIC8vIEZJWE1F
IEdsb2JhbEdDOiBOZWVkIHN5bmNyaG9uaXphdGlvbiBoZXJlIGZvciBhY2Nlc3NpbmcgdGhlIEhl
YXAgc2VydmVyLgotICAgIHZtLmhlYXAudW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFu
ZFNldC5zZXQuYWRkKHRoaXMpOworICAgIHZtLmhlYXAudW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTcGFjZUFuZFNldC5zZXQoKS5hZGQodGhpcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFs
aXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKICAgICAgICAgY2xlYXJJZkRlYWQobV91bmxpbmtl
ZENvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CiAgICAgICAgIGlmIChpc0NsZWFyZWQgJiYgIWlzU3Rp
bGxWYWxpZCkgewogICAgICAgICAgICAgLy8gRklYTUUgR2xvYmFsR0M6IE5lZWQgc3luY3Job25p
emF0aW9uIGhlcmUgZm9yIGFjY2Vzc2luZyB0aGUgSGVhcCBzZXJ2ZXIuCi0gICAgICAgICAgICB2
bS5oZWFwLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQuc2V0LnJlbW92ZSh0
aGlzKTsKKyAgICAgICAgICAgIHZtLmhlYXAudW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZUFuZFNldC5zZXQoKS5yZW1vdmUodGhpcyk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5oCmluZGV4IDRkY2Y1ZWRiMmM2Zjc5MThmNTI2YzhjNzE0YjcxZjU5ZTNkYzRj
NWIuLjZkMjAxZGUxMmEyZTYyYjcyOTFhZDkwZTc0ZDA2MGE5YTQ3MDUwNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5oCkBAIC0xMzMsNyArMTMzLDcgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgbV91bmxpbmtlZENvZGVC
bG9ja0ZvckNhbGwuY2xlYXIoKTsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0
cnVjdC5jbGVhcigpOwogICAgICAgICAvLyBGSVhNRSBHbG9iYWxHQzogTmVlZCBzeW5jcmhvbml6
YXRpb24gaGVyZSBmb3IgYWNjZXNzaW5nIHRoZSBIZWFwIHNlcnZlci4KLSAgICAgICAgdm0uaGVh
cC51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0LnNldC5yZW1vdmUodGhpcyk7
CisgICAgICAgIHZtLmhlYXAudW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldC5z
ZXQoKS5yZW1vdmUodGhpcyk7CiAgICAgfQogCiAgICAgdm9pZCByZWNvcmRQYXJzZShDb2RlRmVh
dHVyZXMgZmVhdHVyZXMsIExleGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVz
LCBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAppbmRleCA4ZTUzZGRlYWQxZmQ0NTU4MGY1Zjk0ZDQ4ZWNmYWNlMTdjNzc3MDYxLi44ZGUxMDNm
N2Y4YWI0OGM2ZGZkYmJlOTNjNTUxZGY1Mzc1OTQ5ODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcApAQCAtMzY4LDEyICszNjgsMTIgQEAgSGVhcDo6SGVhcChWTSYgdm0sIEhlYXBU
eXBlIGhlYXBUeXBlKQogICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IiwgKnRoaXMsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgZmFzdE1h
bGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDRmNWVkN2E5CiAgICAgRk9SX0VBQ0hfSlND
X0NPTU1PTl9JU09fU1VCU1BBQ0UoSU5JVF9TRVJWRVJfSVNPX1NVQlNQQUNFKQogICAgIEZPUl9F
QUNIX0pTQ19TVFJVQ1RVUkVfSVNPX1NVQlNQQUNFKElOSVRfU0VSVkVSX1NUUlVDVFVSRV9JU09f
U1VCU1BBQ0UpCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50
cyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCi0gICAgLCBleGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkK
ICAgICAsIGNvZGVCbG9ja1NwYWNlQW5kU2V0IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBDb2RlQmxvY2spIC8vIEhhc2g6MHg3N2U2NmVjOQog
ICAgICwgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQgSVNPX1NVQlNQQUNFX0lOSVQoKnRo
aXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8g
SGFzaDoweDVkMTU4ZjMKICAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2VBbmRTZXQgSVNPX1NV
QlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb2dyYW1F
eGVjdXRhYmxlKSAvLyBIYXNoOjB4NTI3Yzc3ZTcKICAgICAsIHVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlU3BhY2VBbmRTZXQgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSAvLyBIYXNoOjB4ZjZi
ODI4ZDkKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKGV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQogCiB7
CiAgICAgbV93b3JsZFN0YXRlLnN0b3JlKDApOwpAQCAtNjc5LDEwICs2NzksMTAgQEAgdm9pZCBI
ZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkKICAgICBmaW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KGV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZv
cmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxv
b2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMg
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCiAgICAgZm9yRWFjaENvZGVCbG9ja1NwYWNlKAogICAg
ICAgICBbJl0gKGF1dG8mIHNwYWNlKSB7Ci0gICAgICAgICAgICB0aGlzLT5maW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPENvZGVCbG9jaz4oc3BhY2Uuc2V0KTsKKyAgICAgICAg
ICAgIHRoaXMtPmZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8Q29kZUJsb2Nr
PihzcGFjZS5zZXQoKSk7CiAgICAgICAgIH0pOwogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRp
b25hbEZpbmFsaXplcnM8U3RydWN0dXJlUmFyZURhdGE+KHN0cnVjdHVyZVJhcmVEYXRhU3BhY2Up
OwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU+KHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQuc2V0
KTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPih1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0LnNl
dCgpKTsKICAgICBpZiAobV93ZWFrU2V0U3BhY2UpCiAgICAgICAgIGZpbmFsaXplTWFya2VkVW5j
b25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrU2V0PigqbV93ZWFrU2V0U3BhY2UpOwogICAgIGlm
IChtX3dlYWtNYXBTcGFjZSkKQEAgLTEwMDMsNyArMTAwMyw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRl
QWxsQ29kZUJsb2NrcyhEZWxldGVBbGxDb2RlRWZmb3J0IGVmZm9ydCkKICAgICBmb3JFYWNoU2Ny
aXB0RXhlY3V0YWJsZVNwYWNlKAogICAgICAgICBbJl0gKGF1dG8mIHNwYWNlQW5kU2V0KSB7CiAg
ICAgICAgICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsK
LSAgICAgICAgICAgIGF1dG8mIHNldCA9IHNwYWNlQW5kU2V0LnNldDsKKyAgICAgICAgICAgIGF1
dG8mIHNldCA9IHNwYWNlQW5kU2V0LnNldHMuc2V0c1swXTsKICAgICAgICAgICAgIHNldC5mb3JF
YWNoTGl2ZUNlbGwoCiAgICAgICAgICAgICAgICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENl
bGw6OktpbmQpIHsKICAgICAgICAgICAgICAgICAgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGFibGUqPihjZWxsKTsKQEAgLTEwNDAsNyAr
MTA0MCw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsVW5saW5rZWRDb2RlQmxvY2tzKERlbGV0ZUFs
bENvZGVFZmZvcnQgZWZmb3J0KQogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NvbGxlY3Rpb25TY29w
ZSk7CiAKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsK
LSAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0LnNldC5mb3JFYWNoTGl2
ZUNlbGwoCisgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldC5zZXQoKS5m
b3JFYWNoTGl2ZUNlbGwoCiAgICAgICAgIFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpL
aW5kKSB7CiAgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IHN0YXRpY19jYXN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAg
ICAgICAgICBleGVjdXRhYmxlLT5jbGVhckNvZGUodm0pOwpAQCAtMjkxNyw2ICsyOTE3LDcgQEAg
dm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgU2V0Um9vdE1hcmtSZWFzb25TY29wZSByb290U2NvcGUodmlzaXRvciwgUm9vdE1h
cmtSZWFzb246OkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzKTsKKyAgICAgICAgICAgICAgICBh
ZGQoaGVhcC0+ZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQuc2V0KDEpKTsKICAgICAgICAg
ICAgICAgICBhZGQoaGVhcC0+ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWlu
dHMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGhlYXAtPm1fd2Vha01hcFNwYWNl
KSB7CkBAIC0zMTY5LDE4ICszMTcwLDE4IEBAIEZPUl9FQUNIX0pTQ19EWU5BTUlDX0lTT19TVUJT
UEFDRShERUZJTkVfRFlOQU1JQ19JU09fU1VCU1BBQ0VfTUVNQkVSX1NMT1cpCiAKICN1bmRlZiBE
RUZJTkVfRFlOQU1JQ19JU09fU1VCU1BBQ0VfTUVNQkVSX1NMT1cKIAotI2RlZmluZSBERUZJTkVf
RFlOQU1JQ19TUEFDRV9BTkRfU0VUX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlw
ZSkgXAorI2RlZmluZSBERUZJTkVfRFlOQU1JQ19TUEFDRV9BTkRfU0VUX01FTUJFUl9TTE9XKG5h
bWUsIGhlYXBDZWxsVHlwZSwgdHlwZSwgc3BhY2VUeXBlKSBcCiAgICAgSXNvU3Vic3BhY2UqIEhl
YXA6Om5hbWUjI1Nsb3coKSBcCiAgICAgeyBcCiAgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBc
Ci0gICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBhdXRvIHNwYWNl
ID0gbWFrZVVuaXF1ZTxzcGFjZVR5cGU+IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBoZWFwQ2Vs
bFR5cGUsIHR5cGUpOyBcCiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKICAgICAg
ICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAogICAgICAgICByZXR1cm4gJm1fIyNuYW1l
LT5zcGFjZTsgXAogICAgIH0KIAotREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1CRVJf
U0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBF
dmFsRXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlkCi1ERUZJTkVfRFlOQU1JQ19TUEFDRV9B
TkRfU0VUX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4
NjUwNmZhM2MKK0RFRklORV9EWU5BTUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NMT1coZXZhbEV4
ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFi
bGUsIEhlYXA6OkV4ZWN1dGFibGVTcGFjZUFuZFNldCkgLy8gSGFzaDoweDk1OGUzZTlkCitERUZJ
TkVfRFlOQU1JQ19TUEFDRV9BTkRfU0VUX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlLCBIZWFwOjpFeGVjdXRhYmxlU3BhY2VBbmRTZXQpIC8vIEhhc2g6MHg2NTA2ZmEzYwog
CiAjdW5kZWYgREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xPVwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggYWYwZTRjNDZhNmNlYTcwNmJjYjFhZWVjNDEyZjE5
ZDUxYmI0ODE1Mi4uNjQzYTc1ZTExZDJhMjA3MDc0M2ZiZWE3MjI1ODM4YzE2NGRlMmVjYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtMTAyOSwxMCArMTAyOSw3IEBAIGNsYXNzIEhl
YXAgewogICAgIEZPUl9FQUNIX0pTQ19EWU5BTUlDX0lTT19TVUJTUEFDRShERUZJTkVfRFlOQU1J
Q19JU09fU1VCU1BBQ0VfTUVNQkVSKQogI3VuZGVmIERFRklORV9EWU5BTUlDX0lTT19TVUJTUEFD
RV9NRU1CRVIKICAgICAKLSAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aENvbnN0cmFpbnRzOwotICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZXNXaXRoRmluYWxpemVyczsKLQotI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5F
X01FTUJFUihuYW1lKSBcCisjZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVN
QkVSKG5hbWUsIHR5cGUpIFwKICAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBcCiAg
ICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCiAgICAgeyBcCkBAIC0xMDQzLDMxICsxMDQwLDQ5IEBA
IGNsYXNzIEhlYXAgewogICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCiAgICAgfSBcCiAg
ICAgSXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsgXAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGFj
ZUFuZFNldD4gbV8jI25hbWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPHR5cGU+IG1fIyNuYW1lOwog
ICAgIAorICAgIHRlbXBsYXRlPHNpemVfdCBOPgogICAgIHN0cnVjdCBTcGFjZUFuZFNldCB7CiAg
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAorICAgICAgICBjbGFzcyBT
ZXRzIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgdGVtcGxhdGU8c2l6ZV90Li4uIElz
PgorICAgICAgICAgICAgU2V0cyhJc29TdWJzcGFjZSYgc3BhY2UsIHN0ZDo6aW5kZXhfc2VxdWVu
Y2U8SXMuLi4+KQorICAgICAgICAgICAgICAgIDogc2V0cyB7ICgodm9pZClJcywgSXNvQ2VsbFNl
dCB7IHNwYWNlIH0pLi4uIH0KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgSXNvQ2VsbFNldCBzZXRzW05dOworICAgICAgICB9OworCiAgICAgICAgIElzb1N1YnNw
YWNlIHNwYWNlOwotICAgICAgICBJc29DZWxsU2V0IHNldDsKKyAgICAgICAgU2V0cyBzZXRzOwog
ICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgICAg
ICBTcGFjZUFuZFNldChBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgICAgICAgICA6IHNw
YWNlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCi0gICAgICAgICAgICAs
IHNldChzcGFjZSkKKyAgICAgICAgICAgICwgc2V0cyhzcGFjZSwgc3RkOjptYWtlX2luZGV4X3Nl
cXVlbmNlPE4+e30pCiAgICAgICAgIHsKICAgICAgICAgfQorCisgICAgICAgIElzb0NlbGxTZXQm
IHNldCh1bnNpZ25lZCBpbmRleCA9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBz
ZXRzLnNldHNbaW5kZXhdOworICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgSXNv
Q2VsbFNldCYgc2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkKKyAgICAgICAgc3RhdGljIElzb0NlbGxT
ZXQmIHNldEZvcihTdWJzcGFjZSYgc3BhY2UsIHVuc2lnbmVkIGluZGV4ID0gMCkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8SXNvQ2VsbFNldCo+KAogICAgICAg
ICAgICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oJnNwYWNlKSAtCiAgICAgICAgICAgICAgICAg
T0JKRUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzcGFjZSkgKwotICAgICAgICAgICAgICAgIE9C
SkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc2V0KSk7CisgICAgICAgICAgICAgICAgT0JKRUNU
X09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzZXRzKSArIHNpemVvZihJc29DZWxsU2V0KSAqIGluZGV4
KTsKICAgICAgICAgfQogICAgIH07CiAKLSAgICBTcGFjZUFuZFNldCBjb2RlQmxvY2tTcGFjZUFu
ZFNldDsKKyAgICB1c2luZyBDb2RlQmxvY2tTcGFjZUFuZFNldCA9IFNwYWNlQW5kU2V0PDE+Owor
ICAgIENvZGVCbG9ja1NwYWNlQW5kU2V0IGNvZGVCbG9ja1NwYWNlQW5kU2V0OwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25z
dCBGdW5jJiBmdW5jKQpAQCAtMTA3NSwxMCArMTA5MCwxMSBAQCBjbGFzcyBIZWFwIHsKICAgICAg
ICAgZnVuYyhjb2RlQmxvY2tTcGFjZUFuZFNldCk7CiAgICAgfQogCi0gICAgRFlOQU1JQ19TUEFD
RV9BTkRfU0VUX0RFRklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVTcGFjZSkKLSAgICBEWU5BTUlD
X1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNl
KQotICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0OwotICAgIFNw
YWNlQW5kU2V0IHByb2dyYW1FeGVjdXRhYmxlU3BhY2VBbmRTZXQ7CisgICAgdXNpbmcgRXhlY3V0
YWJsZVNwYWNlQW5kU2V0ID0gU3BhY2VBbmRTZXQ8Mz47CisgICAgRFlOQU1JQ19TUEFDRV9BTkRf
U0VUX0RFRklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVTcGFjZSwgRXhlY3V0YWJsZVNwYWNlQW5k
U2V0KQorICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlU3BhY2UsIEV4ZWN1dGFibGVTcGFjZUFuZFNldCkKKyAgICBFeGVjdXRhYmxl
U3BhY2VBbmRTZXQgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQ7CisgICAgRXhlY3V0YWJs
ZVNwYWNlQW5kU2V0IHByb2dyYW1FeGVjdXRhYmxlU3BhY2VBbmRTZXQ7CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShj
b25zdCBGdW5jJiBmdW5jKQpAQCAtMTA5MSw3ICsxMTA3LDExIEBAIGNsYXNzIEhlYXAgewogICAg
ICAgICBmdW5jKHByb2dyYW1FeGVjdXRhYmxlU3BhY2VBbmRTZXQpOwogICAgIH0KIAotICAgIFNw
YWNlQW5kU2V0IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQ7CisgICAgdXNp
bmcgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldCA9IFNwYWNlQW5kU2V0PDE+
OworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQgdW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldDsKKworICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7CisgICAgSXNvQ2VsbFNldCBleGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOwogCiAgICAgVmVjdG9yPElzb1N1YnNwYWNl
UGVyVk0qPiBwZXJWTUlzb1N1YnNwYWNlczsKICN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRf
REVGSU5FX01FTUJFUgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
Q2VsbFNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4
IGNjYjg0NWVhMTFmYmVhOGUyYWRjZTU2NjFiZGVhOGMyMWU5YTJhOWYuLjhiZDdlN2VhNWE5NDIz
ZWFlYWFjMGY5NDljMTBjNGMxZjBiYTdjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0lzb0NlbGxTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29DZWxsU2V0LmgKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlIDx3dGYvQml0bWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0NvbmN1cnJlbnRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25t
b3ZhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgogI2luY2x1ZGUg
PHd0Zi9TaGFyZWRUYXNrLmg+CiAKQEAgLTQwLDcgKzQyLDkgQEAgY2xhc3MgSXNvU3Vic3BhY2U7
CiAvLyBDcmVhdGUgYSBzZXQgb2YgY2VsbHMgdGhhdCBhcmUgaW4gYW4gSXNvU3Vic3BhY2UuIFRo
aXMgYWxsb3dzIGNvbmN1cnJlbnQgTygxKSBzZXQgaW5zZXJ0aW9uIGFuZAogLy8gcmVtb3ZhbC4g
RWFjaCBzdWNoIHNldCBzaG91bGQgYmUgdGhvdWdodCBvZiBhcyBhIDAuOCUgaW5jcmVhc2UgaW4g
b2JqZWN0IHNpemUgZm9yIG9iamVjdHMgaW4gdGhhdAogLy8gSXNvU3Vic3BhY2UgKGl0J3MgbGlr
ZSBhZGRpbmcgMSBiaXQgZXZlcnkgMTYgYnl0ZXMsIG9yIDEgYml0IGV2ZXJ5IDEyOCBiaXRzKS4K
LWNsYXNzIElzb0NlbGxTZXQgOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPElzb0NlbGxT
ZXQ+IHsKK2NsYXNzIElzb0NlbGxTZXQgZmluYWwgOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxO
b2RlPElzb0NlbGxTZXQ+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJc29DZWxsU2V0KTsK
KyAgICBXVEZfTUFLRV9OT05NT1ZBQkxFKElzb0NlbGxTZXQpOwogcHVibGljOgogICAgIElzb0Nl
bGxTZXQoSXNvU3Vic3BhY2UmIHN1YnNwYWNlKTsKICAgICB+SXNvQ2VsbFNldCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGU5YzBlY2MzMGVhY2M2OGM1NTlmOGFjNDYzZTEwNjIy
MzFkZGViNmEuLjg1NGYwMTc1OGZhZTZkNWM0NmIwOTJjZTllOTdmYzA2MTI5Yzk5NzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIxNCw4ICsyMTQsNiBAQCB2b2lkIEpJVDo6ZW1p
dFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQpCiAgICAgICAgIGxv
YWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QoKSksIHJlc3VsdCk7CiAgICAgZWxzZQogICAgICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVzdWx0LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2Fs
bCgpKSwgcmVzdWx0KTsKLQotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U6Om9mZnNldE9mQ29kZUJsb2NrKCkpLCByZXN1bHQpOwogICAgIGVtaXRQ
dXRUb0NhbGxGcmFtZUhlYWRlcihyZXN1bHQsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CiAK
ICNpZiBBU1NFUlRfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGE4ZTdjNzM5OWQ1ODFhNTk2MGQwYWE3YWE3
MjQzMzVkYjAzNTRjNzUuLmZkODg0OGIyNWNhNjhjYjdhMGM1N2EzNjQxZTc2Y2E2Y2JhNTI5YzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KQEAgLTE1MjIsNyArMTUyMiw2IEBAIG1hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVC
bG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKICAgICBsb2FkcCAoRnVuY3Rpb25SYXJlRGF0YTo6
bV9leGVjdXRhYmxlIC0gKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpW3Rhcmdl
dFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKIC5pc0V4ZWN1dGFibGU6CiAgICAgbG9hZHAgRnVu
Y3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJn
ZXRSZWdpc3RlcgotICAgIGxvYWRwIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6Om1fY29kZUJs
b2NrW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKIGVuZAogCiBtYWNybyBmdW5jdGlv
bkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKQEAgLTE1MzYsNyAr
MTUzNSw2IEBAIG1hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdl
dFJlZ2lzdGVyKQogICAgIGxvYWRwIChGdW5jdGlvblJhcmVEYXRhOjptX2V4ZWN1dGFibGUgLSAo
Y29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSlbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJn
ZXRSZWdpc3RlcgogLmlzRXhlY3V0YWJsZToKICAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6
Om1fY29kZUJsb2NrRm9yQ29uc3RydWN0W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIK
LSAgICBsb2FkcCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjptX2NvZGVCbG9ja1t0YXJnZXRS
ZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCiBlbmQKIAogbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxv
Y2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBkODFhYzYwNmY3NGQ4NTJiOGRi
ZWU5M2RkZDU2NzY1OGJlMDc0OTk0Li40M2M2OTYwZDYzMzM2MmU5MTUwYTM4MWYyZmNiNzAwMDQy
NDZmMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTI0LDEwICsyNCwxMiBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgiCiAKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkZ1bmN0aW9uT3ZlcnJpZGVzLmgiCisjaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTU1
LDI3ICs1NywyNiBAQCB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCiAKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29k
ZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKLSAgICBFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlKiBlZGdlOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbnVsbHB0
cjsKICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkKLSAgICAgICAgZWRnZSA9IG1fY29kZUJs
b2NrRm9yQ2FsbC5nZXQoKTsKKyAgICAgICAgY29kZUJsb2NrID0gY29kZUJsb2NrRm9yQ2FsbCgp
OwogICAgIGVsc2UgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5kID09IENvZGVGb3JDb25z
dHJ1Y3QpOwotICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCk7Cisg
ICAgICAgIGNvZGVCbG9jayA9IGNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpOwogICAgIH0KLSAgICBp
ZiAoIWVkZ2UpCisgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KGVkZ2UtPmNvZGVCbG9j
aygpLT5iYXNlbGluZUFsdGVybmF0aXZlKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5j
dGlvbkNvZGVCbG9jayo+KGNvZGVCbG9jay0+YmFzZWxpbmVBbHRlcm5hdGl2ZSgpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNp
dENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiB7CisgICAgVk0m
IHZtID0gdmlzaXRvci52bSgpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogdGhpc09iamVjdCA9
IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Rv
cExldmVsRXhlY3V0YWJsZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jb2Rl
QmxvY2tGb3JDYWxsKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NvZGVCbG9j
a0ZvckNvbnN0cnVjdCk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV91bmxpbmtl
ZEV4ZWN1dGFibGUpOwogICAgIGlmIChSYXJlRGF0YSogcmFyZURhdGEgPSB0aGlzT2JqZWN0LT5t
X3JhcmVEYXRhLmdldCgpKSB7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHJhcmVEYXRhLT5tX2Nh
Y2hlZFBvbHlQcm90b1N0cnVjdHVyZUlEKTsKQEAgLTg2LDEwICs4NywxMDAgQEAgdm9pZCBGdW5j
dGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYg
dmlzaXRvcikKICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChlbnRyeS52YWx1ZSk7CiAg
ICAgICAgIH0KICAgICB9CisKKyAgICBhdXRvIHZpc2l0Q29kZUJsb2NrRWRnZSA9IFsmXSh1aW50
cHRyX3QgY29kZUJsb2NrRWRnZSkgeworICAgICAgICBhdXRvKiBjb2RlQmxvY2sgPSBiaXR3aXNl
X2Nhc3Q8Q29kZUJsb2NrKj4oY29kZUJsb2NrRWRnZSk7CisKKyAgICAgICAgLy8gSXQncyBwb3Nz
aWJsZSBmb3Igc29tZW9uZSB0byBob2xkIGEgcG9pbnRlciB0byB0aGUgZWRnZSBhZnRlciB0aGUg
ZWRnZSBoYXMgY2xlYXJlZCBpdHMgd2VhaworICAgICAgICAvLyByZWZlcmVuY2UgdG8gdGhlIGNv
ZGVCbG9jay4gSW4gYSBjb25zZXJ2YXRpdmUgR0MgbGlrZSBvdXJzLCB0aGF0IGNvdWxkIGhhcHBl
biBhdCByYW5kb20gZm9yCisgICAgICAgIC8vIG5vIGdvb2QgcmVhc29uIGFuZCBpdCdzIFRvdGFs
bHkgT0sgKFRNKS4gU2VlIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkgZm9yIHdoZXJlIHdlIGNs
ZWFyCisgICAgICAgIC8vIG1fY29kZUJsb2NrLgorICAgICAgICBpZiAoIWNvZGVCbG9jaykKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKworICAgICAgICBpZiAoY29kZUJsb2NrLT5zaG91bGRW
aXNpdFN0cm9uZ2x5KGxvY2tlciwgdmlzaXRvcikpCisgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZFVuYmFycmllcmVkKGNvZGVCbG9jayk7CisKKyAgICAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1p
emluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGpl
dHRpc29uIG91cnNlbHZlcyB3ZSdsbCBpbnN0YWxsIG91ciBhbHRlcm5hdGl2ZSwgc28gbWFrZSBz
dXJlIHRoYXQgaXQKKyAgICAgICAgICAgIC8vIHN1cnZpdmVzIEdDIGV2ZW4gaWYgd2UgZG9uJ3Qu
CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChjb2RlQmxvY2stPm1fYWx0ZXJuYXRpdmUpOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gTk9URTogVGhlcmUgYXJlIHR3byBzaWRlcyB0byB0aGlz
IGNvbnN0cmFpbnQsIHdpdGggZGlmZmVyZW50IHJlcXVpcmVtZW50cyBmb3IgY29ycmVjdG5lc3Mu
CisgICAgICAgIC8vIEJlY2F1c2UgZXZlcnl0aGluZyBpcyB1bHRpbWF0ZWx5IHByb3RlY3RlZCB3
aXRoIHdlYWsgcmVmZXJlbmNlcyBhbmQgamV0dGlzb25pbmcsIGl0J3MKKyAgICAgICAgLy8gYWx3
YXlzICJPSyIgdG8gY2xhaW0gdGhhdCBzb21ldGhpbmcgaXMgZGVhZCBwcmVtYXR1cmVseSBhbmQg
aXQncyAiT0siIHRvIGtlZXAgdGhpbmdzIGFsaXZlLgorICAgICAgICAvLyBCdXQgYm90aCBjaG9p
Y2VzIGNvdWxkIGxlYWQgdG8gYmFkIHBlcmYgLSBlaXRoZXIgcmVjb21wIGN5Y2xlcyBvciBsZWFr
cy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gRGV0ZXJtaW5pbmcgQ29kZUJsb2NrIGxpdmVuZXNz
OiBUaGlzIHBhcnQgaXMgdGhlIG1vc3QgY29uc2VxdWVudGlhbC4gV2Ugd2FudCB0byBrZWVwIHRo
ZQorICAgICAgICAvLyBvdXRwdXQgY29uc3RyYWludCBhY3RpdmUgc28gbG9uZyBhcyB3ZSB0aGlu
ayB0aGF0IHdlIG1heSB5ZXQgcHJvdmUgdGhhdCB0aGUgQ29kZUJsb2NrIGlzCisgICAgICAgIC8v
IGxpdmUgYnV0IHdlIGhhdmVuJ3QgZG9uZSBpdCB5ZXQuCisgICAgICAgIC8vCisgICAgICAgIC8v
IE1hcmtpbmcgU3RydWN0dXJlcyBpZiBwcm9maXRhYmxlOiBJdCdzIGltcG9ydGFudCB0aGF0IHdl
IGRvIGEgcGFzcyBvZiB0aGlzLiBMb2dpY2FsbHksIHRoaXMKKyAgICAgICAgLy8gc2VlbXMgbGlr
ZSBpdCBpcyBhIGNvbnN0cmFpbnQgb2YgQ29kZUJsb2NrLiBCdXQgd2UgaGF2ZSBhbHdheXMgZmly
c3QgcnVuIHRoaXMgYXMgYSByZXN1bHQKKyAgICAgICAgLy8gb2YgdGhlIGVkZ2UgYmVpbmcgbWFy
a2VkIGV2ZW4gYmVmb3JlIHdlIGRldGVybWluZSB0aGUgbGl2ZW5lc3Mgb2YgdGhlIENvZGVCbG9j
ay4gVGhpcworICAgICAgICAvLyBhbGxvd3MgYSBDb2RlQmxvY2sgdG8gbWFyayBpdHNlbGYgYnkg
Zmlyc3QgcHJvdmluZyB0aGF0IGFsbCBvZiB0aGUgU3RydWN0dXJlcyBpdCB3ZWFrbHkKKyAgICAg
ICAgLy8gZGVwZW5kcyBvbiBjb3VsZCBiZSBzdHJvbmdseSBtYXJrZWQuIChUaGlzIHBhcnQgaXMg
YWxzbyBjYWxsZWQgcHJvcGFnYXRlVHJhbnNpdGlvbnMuKQorICAgICAgICAvLworICAgICAgICAv
LyBBcyBhIHdlaXJkIGNhdmVhdCwgd2Ugb25seSBmaXhwb2ludCB0aGUgY29uc3RyYWludHMgc28g
bG9uZyBhcyB0aGUgQ29kZUJsb2NrIGlzIG5vdCBsaXZlLgorICAgICAgICAvLyBUaGlzIG1lYW5z
IHRoYXQgd2UgbWF5IG92ZXJsb29rIHN0cnVjdHVyZSBtYXJraW5nIG9wcG9ydHVuaXRpZXMgY3Jl
YXRlZCBieSBvdGhlciBtYXJraW5nCisgICAgICAgIC8vIHRoYXQgaGFwcGVucyBhZnRlciB0aGUg
Q29kZUJsb2NrIGlzIG1hcmtlZC4gVGhpcyB3YXMgYW4gYWNjaWRlbnRhbCBwb2xpY3kgZGVjaXNp
b24gZnJvbSBhCisgICAgICAgIC8vIGxvbmcgdGltZSBhZ28sIGJ1dCBpdCBpcyBwcm9iYWJseSBP
Sywgc2luY2UgaXQncyBvbmx5IHdvcnRod2hpbGUgdG8ga2VlcCBmaXhwb2ludGluZyB0aGUKKyAg
ICAgICAgLy8gc3RydWN0dXJlIG1hcmtpbmcgaWYgd2Ugc3RpbGwgaGF2ZSB1bm1hcmtlZCBzdHJ1
Y3R1cmVzIGFmdGVyIHRoZSBmaXJzdCByb3VuZC4gV2UgYWxtb3N0CisgICAgICAgIC8vIG5ldmVy
IHdpbGwgYmVjYXVzZSB3ZSB3aWxsIG1hcmstaWYtcHJvZml0YWJsZSBiYXNlZCBvbiB0aGUgb3du
aW5nIGdsb2JhbCBvYmplY3QgYmVpbmcKKyAgICAgICAgLy8gYWxyZWFkeSBtYXJrZWQuIFdlIG1h
cmsgaXQganVzdCBpbiBjYXNlIHRoYXQgaGFkbid0IGhhcHBlbmVkIHlldC4gQW5kIGlmIHRoZSBD
b2RlQmxvY2sgaXMKKyAgICAgICAgLy8gbm90IHlldCBtYXJrZWQgYmVjYXVzZSBpdCB3ZWFrbHkg
ZGVwZW5kcyBvbiBhIHN0cnVjdHVyZSB0aGF0IHdlIGRpZCBub3QgeWV0IG1hcmssIHRoZW4gd2UK
KyAgICAgICAgLy8gd2lsbCBrZWVwIGZpeHBvaW50aW5nIHVudGlsIHRoZSBlbmQuCisgICAgICAg
IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7Cisg
ICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5ydW5Db25zdHJhaW50KGxvY2tlciwgdmlzaXRvciwg
Y29kZUJsb2NrKTsKKyAgICB9OworCisgICAgYm9vbCBzaG91bGRLZWVwSW5Db25zdHJhaW50U2V0
ID0gZmFsc2U7CisgICAgc2hvdWxkS2VlcEluQ29uc3RyYWludFNldCB8PSB2aXNpdENvZGVCbG9j
a0VkZ2UodGhpc09iamVjdC0+bV9jb2RlQmxvY2tGb3JDYWxsKTsKKyAgICBzaG91bGRLZWVwSW5D
b25zdHJhaW50U2V0IHw9IHZpc2l0Q29kZUJsb2NrRWRnZSh0aGlzT2JqZWN0LT5tX2NvZGVCbG9j
a0ZvckNvbnN0cnVjdCk7CisgICAgaWYgKHNob3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQpCisgICAg
ICAgIHZtLmhlYXAuZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQuc2V0KDEpLmFkZCh0aGlz
T2JqZWN0KTsKIH0KIAogREVGSU5FX1ZJU0lUX0NISUxEUkVOKEZ1bmN0aW9uRXhlY3V0YWJsZSk7
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Cit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
dmlzaXRPdXRwdXRDb25zdHJhaW50c0ltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsKKyAgICBhdXRvKiBleGVjdXRhYmxlID0g
anNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIGJvb2wgc2hvdWxkS2VlcElu
Q29uc3RyYWludFNldCA9IGZhbHNlOworICAgIGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWN1dGFibGUtPmNvZGVCbG9ja0ZvckNhbGwoKSkgeworICAgICAgICBpZiAoIXZpc2l0b3IuaXNN
YXJrZWQoY29kZUJsb2NrKSkKKyAgICAgICAgICAgIHNob3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQg
fD0gZXhlY3V0YWJsZS0+cnVuQ29uc3RyYWludChOb0xvY2tpbmdOZWNlc3NhcnksIHZpc2l0b3Is
IGNvZGVCbG9jayk7CisgICAgfQorICAgIGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1
dGFibGUtPmNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpKSB7CisgICAgICAgIGlmICghdmlzaXRvci5p
c01hcmtlZChjb2RlQmxvY2spKQorICAgICAgICAgICAgc2hvdWxkS2VlcEluQ29uc3RyYWludFNl
dCB8PSBleGVjdXRhYmxlLT5ydW5Db25zdHJhaW50KE5vTG9ja2luZ05lY2Vzc2FyeSwgdmlzaXRv
ciwgY29kZUJsb2NrKTsKKyAgICB9CisgICAgaWYgKCFzaG91bGRLZWVwSW5Db25zdHJhaW50U2V0
KQorICAgICAgICB2bS5oZWFwLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0LnNldCgxKS5y
ZW1vdmUoZXhlY3V0YWJsZSk7Cit9CisKK0RFRklORV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlOVFMo
RnVuY3Rpb25FeGVjdXRhYmxlKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK2Jvb2wg
RnVuY3Rpb25FeGVjdXRhYmxlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYgbG9ja2VyLCBWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAg
ICBpZiAoIWNvZGVCbG9jaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29kZUJsb2Nr
LT5wcm9wYWdhdGVUcmFuc2l0aW9ucyhsb2NrZXIsIHZpc2l0b3IpOworICAgIGNvZGVCbG9jay0+
ZGV0ZXJtaW5lTGl2ZW5lc3MobG9ja2VyLCB2aXNpdG9yKTsKKworICAgIHJldHVybiAhdmlzaXRv
ci5pc01hcmtlZChjb2RlQmxvY2spOworfQorCit0ZW1wbGF0ZSBib29sIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6cnVuQ29uc3RyYWludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBBYnN0cmFjdFNs
b3RWaXNpdG9yJiwgQ29kZUJsb2NrKik7Cit0ZW1wbGF0ZSBib29sIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6cnVuQ29uc3RyYWludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTbG90VmlzaXRvciYs
IENvZGVCbG9jayopOworCiBGdW5jdGlvbkV4ZWN1dGFibGUqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
ZnJvbUdsb2JhbENvZGUoCiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCAKICAgICBKU09iamVj
dComIGV4Y2VwdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlciwgc3RkOjpvcHRpb25hbDxpbnQ+
IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IDBhOTEy
YWU1ZWY3MmQwMTU4ZWJkNWNlZGNlNTYyNGI2MTUxOTJhYmUuLmNjY2ZlN2E5YjI0MjMzNWU3MzE1
MGVkZGRlMzVlZTg2YTAwYmQ1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC02OSwzNCArNjksMzEgQEAgY2xhc3MgRnVu
Y3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIC8v
IFJldHVybnMgZWl0aGVyIGNhbGwgb3IgY29uc3RydWN0IGJ5dGVjb2RlLiBUaGlzIGNhbiBiZSBh
cHByb3ByaWF0ZQogICAgIC8vIGZvciBhbnN3ZXJpbmcgcXVlc3Rpb25zIHRoYXQgdGhhdCBkb24n
dCB2YXJ5IGJldHdlZW4gY2FsbCBhbmQgY29uc3RydWN0IC0tCiAgICAgLy8gZm9yIGV4YW1wbGUs
IGFyZ3VtZW50c1JlZ2lzdGVyKCkuCi0gICAgRnVuY3Rpb25Db2RlQmxvY2sqIGVpdGhlckNvZGVC
bG9jaygpCisgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGVpdGhlckNvZGVCbG9jaygpIGNvbnN0CiAg
ICAgewotICAgICAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBlZGdlOwotICAgICAgICBp
ZiAobV9jb2RlQmxvY2tGb3JDYWxsKQotICAgICAgICAgICAgZWRnZSA9IG1fY29kZUJsb2NrRm9y
Q2FsbC5nZXQoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZWRnZSA9IG1fY29kZUJsb2Nr
Rm9yQ29uc3RydWN0LmdldCgpOwotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEZ1bmN0aW9u
Q29kZUJsb2NrKj4oRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dW53cmFwKGVkZ2UpKTsKKyAg
ICAgICAgaWYgKGF1dG8qIHJlc3VsdCA9IGNvZGVCbG9ja0ZvckNhbGwoKSkKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKTsK
ICAgICB9CiAgICAgICAgIAogICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiAhIW1fY29kZUJsb2NrRm9yQ2FsbDsKKyAgICAgICAgcmV0dXJu
ICEhY29kZUJsb2NrRm9yQ2FsbCgpOwogICAgIH0KIAotICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBj
b2RlQmxvY2tGb3JDYWxsKCkKKyAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrRm9yQ2Fs
bCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEZ1bmN0aW9uQ29k
ZUJsb2NrKj4oRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dW53cmFwKG1fY29kZUJsb2NrRm9y
Q2FsbC5nZXQoKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEZ1bmN0aW9uQ29kZUJs
b2NrKj4obV9jb2RlQmxvY2tGb3JDYWxsKTsKICAgICB9CiAKICAgICBib29sIGlzR2VuZXJhdGVk
Rm9yQ29uc3RydWN0KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhIW1fY29kZUJsb2Nr
Rm9yQ29uc3RydWN0OworICAgICAgICByZXR1cm4gISFjb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKTsK
ICAgICB9CiAKLSAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrRm9yQ29uc3RydWN0KCkK
KyAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrRm9yQ29uc3RydWN0KCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0
KCkpKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KG1f
Y29kZUJsb2NrRm9yQ29uc3RydWN0KTsKICAgICB9CiAgICAgICAgIAogICAgIGJvb2wgaXNHZW5l
cmF0ZWRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTIyLDYgKzExOSw4IEBA
IGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxl
IHsKICAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwogICAgIH0KIAor
ICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiByZXBsYWNlQ29kZUJsb2NrV2l0aChWTSYsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQsIENvZGVCbG9jayopOworCiAgICAgUmVmUHRyPFR5cGVTZXQ+IHJldHVy
blN0YXRlbWVudFR5cGVTZXQoKSAKICAgICB7CiAgICAgICAgIFJhcmVEYXRhJiByYXJlRGF0YSA9
IGVuc3VyZVJhcmVEYXRhKCk7CkBAIC0xNjIsNiArMTYxLDcgQEAgY2xhc3MgRnVuY3Rpb25FeGVj
dXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIFNvdXJjZUNvZGUg
Y2xhc3NTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y2xhc3NT
b3VyY2UoKTsgfQogCiAgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKKyAgICBERUNMQVJFX1ZJ
U0lUX09VVFBVVF9DT05TVFJBSU5UUzsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
KQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvLCBUeXBlSW5mbyhGdW5jdGlvbkV4ZWN1dGFibGVUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CkBAIC0yOTksNiArMjk5LDggQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIAogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUpOwogCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gYm9vbCBydW5Db25zdHJhaW50KGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIFZpc2l0b3ImLCBDb2RlQmxvY2sqKTsKKwogICAgIGZyaWVuZCBj
bGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogCiAgICAgc3RydWN0IFJhcmVEYXRhIHsKQEAgLTMzMSw4
ICszMzMsOCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0YWJsZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwog
ICAgIFdyaXRlQmFycmllcjxTY3JpcHRFeGVjdXRhYmxlPiBtX3RvcExldmVsRXhlY3V0YWJsZTsK
ICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fdW5saW5rZWRF
eGVjdXRhYmxlOwotICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBt
X2NvZGVCbG9ja0ZvckNhbGw7Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2U+IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0OworICAgIHVpbnRwdHJfdCBtX2NvZGVCbG9j
a0ZvckNhbGwgeyAwIH07CisgICAgdWludHB0cl90IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0IHsg
MCB9OwogICAgIEluZmVycmVkVmFsdWU8SlNGdW5jdGlvbj4gbV9zaW5nbGV0b247CiAgICAgQm94
PElubGluZVdhdGNocG9pbnRTZXQ+IG1fcG9seVByb3RvV2F0Y2hwb2ludDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVJ
bmxpbmVzLmgKaW5kZXggYzlhMGIxMjI0MDQzMzI5NzFhMTZjMjhhNmQxNWY1NGVmM2Y1MGQ4Yy4u
ZmIwYzI1MDk0MjkzMDUwZWJmMmRjZjRiNWQxY2Y4MzY2MDE1OWQ4NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUlubGlu
ZXMuaApAQCAtMzMsOSArMzMsNDMgQEAgbmFtZXNwYWNlIEpTQyB7CiBpbmxpbmUgdm9pZCBGdW5j
dGlvbkV4ZWN1dGFibGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKIHsKICAgICBt
X3NpbmdsZXRvbi5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSh2bSk7CisKKyAgICBhdXRvIGZpbmFs
aXplQ29kZUJsb2NrRWRnZSA9IFsmXSh1aW50cHRyX3QmIGNvZGVCbG9ja0VkZ2UpIHsKKyAgICAg
ICAgYXV0byogY29kZUJsb2NrID0gYml0d2lzZV9jYXN0PENvZGVCbG9jayo+KGNvZGVCbG9ja0Vk
Z2UpOworICAgICAgICBpZiAoIWNvZGVCbG9jaykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQoY29kZUJsb2NrKSkgeworICAgICAgICAgICAgaWYg
KGNvZGVCbG9jay0+c2hvdWxkSmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2Uodm0pKQorICAgICAg
ICAgICAgICAgIGNvZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9XZWFr
UmVmZXJlbmNlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2st
PmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvT2xkQWdlKTsKKyAgICAgICAgICAgIGlm
IChjb2RlQmxvY2sgPT0gYml0d2lzZV9jYXN0PENvZGVCbG9jayo+KGNvZGVCbG9ja0VkZ2UpKQor
ICAgICAgICAgICAgICAgIGNvZGVCbG9ja0VkZ2UgPSAwOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIGZpbmFsaXplQ29kZUJsb2NrRWRnZShtX2NvZGVCbG9ja0ZvckNhbGwpOworICAgIGZpbmFs
aXplQ29kZUJsb2NrRWRnZShtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CisgICAgdm0uaGVhcC5m
dW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldC5zZXQoMSkucmVtb3ZlKHRoaXMpOworfQorCitp
bmxpbmUgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6cmVwbGFjZUNvZGVC
bG9ja1dpdGgoVk0mIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIENvZGVCbG9jayog
bmV3Q29kZUJsb2NrKQoreworICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAg
IEZ1bmN0aW9uQ29kZUJsb2NrKiBvbGRDb2RlQmxvY2sgPSBjb2RlQmxvY2tGb3JDYWxsKCk7Cisg
ICAgICAgIG1fY29kZUJsb2NrRm9yQ2FsbCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG5ld0Nv
ZGVCbG9jayk7CisgICAgICAgIHZtLndyaXRlQmFycmllcih0aGlzLCBuZXdDb2RlQmxvY2spOwor
ICAgICAgICByZXR1cm4gb2xkQ29kZUJsb2NrOworICAgIH0KKyAgICBBU1NFUlQoa2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0KTsKKyAgICBGdW5jdGlvbkNvZGVCbG9jayogb2xkQ29kZUJsb2NrID0g
Y29kZUJsb2NrRm9yQ29uc3RydWN0KCk7CisgICAgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QgPSBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihuZXdDb2RlQmxvY2spOworICAgIHZtLndyaXRlQmFycmll
cih0aGlzLCBuZXdDb2RlQmxvY2spOworICAgIHJldHVybiBvbGRDb2RlQmxvY2s7CiB9CiAKLUpT
U3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCitpbmxpbmUgSlNTdHJpbmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBSYXJlRGF0YSYgcmFyZURhdGEg
PSBlbnN1cmVSYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURhdGEubV9hc1N0cmluZykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggYTM3NmFmNWVl
YTBkZTZiNTE3MGM0ZmI0NDczNzMwZDI1ODMzMWM1Mi4uYzliNzE2MDcwYmJmZDBhYTBiNGI3Y2M0
ZWUyYWI4NzViZTlmNTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDYXRjaFNjb3BlLmgiCiAj
aW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNp
bmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9y
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ny
aXB0RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRF
eGVjdXRhYmxlLmNwcAppbmRleCBjNmE5ZWFiNjcxNGNlNDJjNDEwODdiZGIwOGZjOTIxNzRhYzhl
Y2JmLi5lOWNiYjg0MTYyMGQwYzdlNDI4YjdlNTc4NTc2ZjdjOTY0MjdjODgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXZhbENvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRnVuY3Rp
b25FeGVjdXRhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkdsb2JhbEV4ZWN1dGFibGUuaCIKICNp
bmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgpAQCAtODAsOCAr
ODEsOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OmNsZWFyQ29kZShJc29DZWxsU2V0JiBjbGVh
cmFibGVDb2RlU2V0KQogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAgICAgY2FzZSBGdW5jdGlvbkV4
ZWN1dGFibGVUeXBlOiB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBleGVjdXRh
YmxlLT5tX2NvZGVCbG9ja0ZvckNhbGwuY2xlYXIoKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV9j
b2RlQmxvY2tGb3JDb25zdHJ1Y3QuY2xlYXIoKTsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV9jb2Rl
QmxvY2tGb3JDYWxsID0gMDsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2tGb3JDb25z
dHJ1Y3QgPSAwOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBFdmFsRXhlY3V0YWJs
ZVR5cGU6IHsKQEAgLTEwOCw3ICsxMDksNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OmNsZWFy
Q29kZShJc29DZWxsU2V0JiBjbGVhcmFibGVDb2RlU2V0KQogICAgICAgICBicmVhazsKICAgICB9
CiAKLSAgICBBU1NFUlQoJkhlYXA6OlNwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkpID09
ICZjbGVhcmFibGVDb2RlU2V0KTsKKyAgICBBU1NFUlQoJkhlYXA6OkV4ZWN1dGFibGVTcGFjZUFu
ZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgpKSA9PSAmY2xlYXJhYmxlQ29kZVNldCk7CiAgICAgY2xl
YXJhYmxlQ29kZVNldC5yZW1vdmUodGhpcyk7CiB9CiAKQEAgLTE2MiwxNiArMTYzLDcgQEAgdm9p
ZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShWTSYgdm0sIENvZGVCbG9jayogZ2VuZXJp
Y0NvZGVCbG9jaywgQ29kZVR5cGUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwogICAgICAgICBGdW5jdGlv
bkNvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihn
ZW5lcmljQ29kZUJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIHN3aXRjaCAoa2luZCkgewotICAg
ICAgICBjYXNlIENvZGVGb3JDYWxsOgotICAgICAgICAgICAgb2xkQ29kZUJsb2NrID0gRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZUFuZFVud3JhcChleGVjdXRhYmxlLT5tX2Nv
ZGVCbG9ja0ZvckNhbGwuZ2V0KCkpOwotICAgICAgICAgICAgZXhlY3V0YWJsZS0+bV9jb2RlQmxv
Y2tGb3JDYWxsLnNldE1heUJlTnVsbCh2bSwgdGhpcywgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6d3JhcEFuZEFjdGl2YXRlKGNvZGVCbG9jaykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKLSAgICAgICAgICAgIG9sZENvZGVCbG9jayA9IEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGVBbmRVbndyYXAoZXhlY3V0YWJsZS0+
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCkpOwotICAgICAgICAgICAgZXhlY3V0YWJsZS0+
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Quc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5kQWN0aXZhdGUoY29kZUJsb2NrKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBvbGRDb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5y
ZXBsYWNlQ29kZUJsb2NrV2l0aCh2bSwga2luZCwgY29kZUJsb2NrKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIH0KQEAgLTE4Nyw3ICsxNzksNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6
Omluc3RhbGxDb2RlKFZNJiB2bSwgQ29kZUJsb2NrKiBnZW5lcmljQ29kZUJsb2NrLCBDb2RlVHlw
ZQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBhdXRvJiBjbGVhcmFibGVDb2RlU2V0ID0g
SGVhcDo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSk7CisgICAgYXV0byYgY2xlYXJh
YmxlQ29kZVNldCA9IEhlYXA6OkV4ZWN1dGFibGVTcGFjZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFj
ZSgpKTsKICAgICBpZiAoaGFzQ2xlYXJhYmxlQ29kZSh2bSkpCiAgICAgICAgIGNsZWFyYWJsZUNv
ZGVTZXQuYWRkKHRoaXMpOwogICAgIGVsc2UKQEAgLTIyNSw3ICsyMTcsNyBAQCBib29sIFNjcmlw
dEV4ZWN1dGFibGU6Omhhc0NsZWFyYWJsZUNvZGUoVk0mIHZtKSBjb25zdAogCiAgICAgaWYgKHN0
cnVjdHVyZSh2bSktPmNsYXNzSW5mbygpID09IEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSB7
CiAgICAgICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxjb25zdCBGdW5jdGlvbkV4
ZWN1dGFibGUqPih0aGlzKTsKLSAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9y
Q2FsbCB8fCBleGVjdXRhYmxlLT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCkKKyAgICAgICAgaWYg
KGV4ZWN1dGFibGUtPmVpdGhlckNvZGVCbG9jaygpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICB9IGVsc2UgaWYgKHN0cnVjdHVyZSh2bSktPmNsYXNzSW5mbygpID09IEV2YWxFeGVj
dXRhYmxlOjppbmZvKCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456188</attachid>
            <date>2022-03-30 17:35:03 -0700</date>
            <delta_ts>2022-03-30 18:23:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238485-20220330173502.patch</filename>
            <type>text/plain</type>
            <size>85399</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDE3MTc2YmU2MThhZGY2NWU5ZTE1MGIxYjhkNTdjYzEyZmU3MzFkLi40MDE4Yzk3OTllZWRiMjhi
ZTgwNWM5ZjJlZmNjYzU4MjgzMzRhMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDEgQEAKKzIwMjItMDMtMzAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDg1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0
cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
Q29tbW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpvd25lckVkZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGJ5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0Zvcik6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFwKToK
KyAgICAgICAgKEpTQzo6SGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpkZWxldGVBbGxVbmxpbmtlZENvZGVCbG9ja3MpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlND
OjpIZWFwOjpTcGFjZUFuZFNldDo6U2V0czo6U2V0cyk6CisgICAgICAgIChKU0M6OkhlYXA6OlNw
YWNlQW5kU2V0OjpTcGFjZUFuZFNldCk6CisgICAgICAgIChKU0M6OkhlYXA6OlNwYWNlQW5kU2V0
OjpzZXQpOgorICAgICAgICAoSlNDOjpIZWFwOjpTcGFjZUFuZFNldDo6c2V0Rm9yKToKKyAgICAg
ICAgKiBoZWFwL0lzb0NlbGxTZXQuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUpOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0
RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6RXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50
aW1lL0V2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb2Rl
QmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6dW5saW5rZWRDb2Rl
QmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6bnVtVmFyaWFibGVz
KToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om51bUZ1bmN0aW9uSG9pc3RpbmdDYW5k
aWRhdGVzKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om51bVRvcExldmVsRnVuY3Rp
b25EZWNscyk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjphbGxvd0RpcmVjdEV2YWxD
YWNoZSBjb25zdCk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb2RlQmxvY2spOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHNJbXBsKToK
KyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpyZXBsYWNlQ29kZUJsb2NrV2l0aCk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvR2xvYmFsRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6Okdsb2JhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5J
bXBsKToKKyAgICAgICAgKEpTQzo6R2xvYmFsRXhlY3V0YWJsZTo6dmlzaXRPdXRwdXRDb25zdHJh
aW50c0ltcGwpOgorICAgICAgICAoSlNDOjpHbG9iYWxFeGVjdXRhYmxlOjpyZXBsYWNlQ29kZUJs
b2NrV2l0aCk6CisgICAgICAgIChKU0M6Okdsb2JhbEV4ZWN1dGFibGU6OmZpbmFsaXplVW5jb25k
aXRpb25hbGx5KToKKyAgICAgICAgKiBydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6R2xvYmFsRXhlY3V0YWJsZTo6Y29kZUJsb2NrIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6R2xvYmFsRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2sgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkluZGly
ZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5j
dGlvbi5jcHA6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNv
cmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL01vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp2aXNp
dENoaWxkcmVuSW1wbCk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorICAg
ICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAg
ICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpjbGVhckNv
ZGUpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZSk6CisgICAg
ICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omhhc0NsZWFyYWJsZUNvZGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAo
SlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpydW5Db25zdHJhaW50KToKKyAgICAgICAgKEpTQzo6U2Ny
aXB0RXhlY3V0YWJsZTo6dmlzaXRDb2RlQmxvY2tFZGdlKToKKyAgICAgICAgKEpTQzo6U2NyaXB0
RXhlY3V0YWJsZTo6ZmluYWxpemVDb2RlQmxvY2tFZGdlKToKKyAgICAgICAgKiBydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpl
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OlZNOjpleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKTog
RGVsZXRlZC4KKwogMjAyMi0wMy0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIE9wdGltaXplIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYSBKU0M6OklkZW50aWZpZXIg
ZnJvbSBhbiBBU0NJSUxpdGVyYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAwMThhZmVkNzE2MjljZTA3MTYzNmQ5ZmZhNGNkZTdhYmZjYTk0YWZkLi5jMzY1OTM3NjZkZDYy
Yzk5NDFkMzkwNDM0ZTVhNzJkYmVjMDY3NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC02MjcsNyArNjI3LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9EYXRhRm9ybWF0LmgKICAgICBieXRlY29kZS9E
aXJlY3RFdmFsQ29kZUNhY2hlLmgKICAgICBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCi0gICAg
Ynl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCiAgICAgYnl0ZWNvZGUvRXhlY3V0
aW9uQ291bnRlci5oCiAgICAgYnl0ZWNvZGUvRXhpdEtpbmQuaAogICAgIGJ5dGVjb2RlL0V4aXRp
bmdJbmxpbmVLaW5kLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTI5NjE5N2Nh
ZjlhMTZkMWMzOTUxMjg5MDQ2YjQ2NzkxOTZmMGNlOC4uMGEzMGY2MTA2ZTg0MDU4YzM1NDdiOTg3
MzdjOGYyYmZlMTFmOWUxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3MCw3
ICszNzAsNiBAQAogCQkwRjVFMEZEODIwN0M3MjczMDA5N0YwREUgLyogREZHQWJzdHJhY3RJbnRl
cnByZXRlckNsb2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY1RTBGRDYyMDdDNzI3MTAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJDbG9iYmVyU3RhdGUuaCAqLzsgfTsKIAkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERFIC8q
IElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNUUwRkU1MjA4NkFENDYwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RUY5
MUYxNjg3OEY3RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRo
dW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTBGNjBGRTkwMUZGQzM3MDIwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYwRkU4RTFG
RkMzNkZEMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjE4MzJBMUM0NUJGMDcw
MDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzIxMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJD
Q2FsbGluZ0NvbnZlbnRpb24uaCAqLzsgfTsKIAkJMEY2MTgzMkQxQzQ1QkYwNzAwNzI0NTBCIC8q
IEFpckVtaXRTaHVmZmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjYxODMyNDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuaCAqLzsg
fTsKIAkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMjYx
QzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oICovOyB9OwpAQCAtMjg5
Nyw4ICsyODk2LDYgQEAKIAkJMEY1RTBGRTYyMDg2QUQ0NzAwOTdGMERFIC8qIElzb1N1YnNwYWNl
UGVyVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXNvU3Vic3Bh
Y2VQZXJWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUVGOTFCMTY4NzhG
NzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSklUVGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1
RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKSVRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEY2MEZFOEQxRkZDMzZGQzAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNjBGRThFMUZGQzM2
RkQwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2MTgzMjAxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckNDYWxs
aW5nQ29udmVudGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBB
aXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwOyBwYXRoID0gYjMvYWlyL0FpckNDYWxsaW5nQ29udmVu
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjE4MzIxMUM0NUJGMDcw
MDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQWlyQ0NhbGxpbmdDb252ZW50aW9uLmg7IHBhdGggPSBiMy9haXIvQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjE4MzIy
MUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQWlyQ3VzdG9tLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODk3Nyw4ICs4OTc0LDYgQEAKIAkJCQkx
NEFEOTExMjFEQ0E5N0ZEMDAxNEY5RkUgLyogRXZhbENvZGVCbG9jay5jcHAgKi8sCiAJCQkJMTRB
RDkxMDYxRENBOTI5NDAwMTRGOUZFIC8qIEV2YWxDb2RlQmxvY2suaCAqLywKIAkJCQkxNDE0MkU1
MjFCNzk2RUREMDBGNEJGNEIgLyogRXhlY3V0YWJsZUluZm8uaCAqLywKLQkJCQkwRjYwRkU4RDFG
RkMzNkZDMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAgKi8sCi0JCQkJ
MEY2MEZFOEUxRkZDMzZGRDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAq
LywKIAkJCQkwRjU2QTFENDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAg
Ki8sCiAJCQkJMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAq
LywKIAkJCQkwRjQ0QTdBOTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovLApAQCAt
MTAyNzMsNyArMTAyNjgsNiBAQAogCQkJCUUzNUEwQjlEMjIwQUQ4N0EwMEFDNDQ3NCAvKiBFeGVj
dXRhYmxlQmFzZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTQyRTUzMUI3OTZFREQw
MEY0QkY0QiAvKiBFeGVjdXRhYmxlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1MTkzRjcy
NjZDNDMyRDAwNDgzQTJDIC8qIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUuaCBpbiBIZWFkZXJzICov
LAotCQkJCTBGNjBGRTkwMUZGQzM3MDIwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU2QTFEMzE1MDAwRjM1MDAyOTkyQjEgLyogRXhl
Y3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NEE3QjAyMEJGNjg2MjAwMjJC
MTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ0QTdCMTIwQkY2OEM5MDAy
MkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDg0YTk2MjQxZGIxZDgzYmJjZGFkM2MxOWVjYTNlNTM5YzZmYjdi
ZjcuLjA1MDY5YzU0ODkyNDhhN2QwMmM1NzZkMDBiOTMxMjE2YTQwM2VhMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKQEAgLTIyOSw3ICsyMjksNiBAQCBieXRlY29kZS9EZWxldGVCeVN0
YXR1cy5jcHAKIGJ5dGVjb2RlL0RlbGV0ZUJ5VmFyaWFudC5jcHAKIGJ5dGVjb2RlL0RpcmVjdEV2
YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29kZS9FdmFsQ29kZUJsb2NrLmNwcAotYnl0ZWNvZGUvRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAKIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3Bw
CiBieXRlY29kZS9FeGl0RmxhZy5jcHAKIGJ5dGVjb2RlL0V4aXRLaW5kLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA2ZDlkOGI1MWUxMTlk
YmMwNzgwOTExNGUxY2IxMGVkYjY3Mjg0NTc4Li42YjAyOTE1MGI1MTJiYzM5NWEzMTkwMjhlMmVj
NWE3ZDhlZjhhODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcApAQCAtMzExLDcgKzMxMSw2IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrCiB2b2lk
IENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENv
ZGVCbG9jayYgb3RoZXIpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIGZp
bmlzaENyZWF0aW9uQ29tbW9uKHZtKTsKIAogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKIApA
QCAtMzY3LDcgKzM2Niw2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgSlNTY29wZSog
c2NvcGUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIGZpbmlzaENyZWF0
aW9uQ29tbW9uKHZtKTsKIAogICAgIEFTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7CiAKQEAg
LTc2NiwxMSArNzY0LDYgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uQ29tbW9uKFZNJiB2bSkKLXsK
LSAgICBtX293bmVyRWRnZS5zZXQodm0sIHRoaXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6
OmNyZWF0ZSh2bSwgdGhpcykpOwotfQotCiAjaWYgRU5BQkxFKEpJVCkKIHZvaWQgQ29kZUJsb2Nr
OjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZShSZWY8QmFzZWxpbmVKSVRDb2RlPiBqaXRD
b2RlKQogewpAQCAtMTA1MSw3ICsxMDQ0LDYgQEAgdm9pZCBDb2RlQmxvY2s6OnZpc2l0Q2hpbGRy
ZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICBDb2RlQmxvY2sqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8Q29kZUJsb2NrKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
Y2VsbCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vd25lckVk
Z2UpOwogICAgIHRoaXNPYmplY3QtPnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiB9CiAKQEAgLTEw
NzksNyArMTA3MSw3IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgc3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMobG9ja2VyLCB2aXNpdG9y
KTsKICAgICBzdHJvbmdseVZpc2l0V2Vha1JlZmVyZW5jZXMobG9ja2VyLCB2aXNpdG9yKTsKICAg
ICAKLSAgICBIZWFwOjpTcGFjZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgpKS5hZGQodGhpcyk7
CisgICAgSGVhcDo6Q29kZUJsb2NrU3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSkuYWRk
KHRoaXMpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgpAQCAtMTY2Nyw3ICsxNjU5
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKICAg
ICB9OwogICAgIHVwZGF0ZUFjdGl2aXR5KCk7CiAKLSAgICBIZWFwOjpTcGFjZUFuZFNldDo6c2V0
Rm9yKCpzdWJzcGFjZSgpKS5yZW1vdmUodGhpcyk7CisgICAgSGVhcDo6Q29kZUJsb2NrU3BhY2VB
bmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwogCiAgICAgLy8gSW4gQ29k
ZUJsb2NrOjpzaG91bGRWaXNpdFN0cm9uZ2x5KCkgd2UgbWF5IGhhdmUgZGVjaWRlZCB0byBza2lw
IHZpc2l0aW5nIHRoaXMKICAgICAvLyBjb2RlQmxvY2suIEJ5IHRoZSB0aW1lIHdlIGdldCBoZXJl
LCB3ZSdyZSBkb25lIHdpdGggdGhlIHZlcmlmaWVyIEdDLiBTbywgbGV0J3MKQEAgLTE4MzQsNyAr
MTgyNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyhj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwKICAgICBVTlVTRURfUEFSQU0obG9ja2Vy
KTsKICAgICAKICAgICB2aXNpdG9yLmFwcGVuZChtX2dsb2JhbE9iamVjdCk7Ci0gICAgdmlzaXRv
ci5hcHBlbmQobV9vd25lckV4ZWN1dGFibGUpOyAvLyBUaGlzIGlzIGV4dHJhIGltcG9ydGFudCBz
aW5jZSBpdCBjYXVzZXMgdGhlIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UgdG8gYmUgbWFya2Vk
LgorICAgIHZpc2l0b3IuYXBwZW5kKG1fb3duZXJFeGVjdXRhYmxlKTsgLy8gVGhpcyBpcyBleHRy
YSBpbXBvcnRhbnQgc2luY2UgaXQgY2F1c2VzIHRoZSBFeGVjdXRhYmxlIC0+IENvZGVCbG9jayBl
ZGdlIGFjdGl2YXRlZC4KICAgICB2aXNpdG9yLmFwcGVuZChtX3VubGlua2VkQ29kZSk7CiAgICAg
aWYgKG1fcmFyZURhdGEpCiAgICAgICAgIG1fcmFyZURhdGEtPm1fZGlyZWN0RXZhbENvZGVDYWNo
ZS52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAppbmRleCA0Njk2M2Q3M2RlMjNlMDFmZDE1MjU0NTFhODM0N2I2Yzc3NWMx
ODI2Li4yN2E4MzM1MTgwMDEzNjk4NTQyZTQ3YjU0M2NhYjMyYmEzYWNjZjMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04NywxMiArODcsMTIgQEAg
Y2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFz
cyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7Ci1jbGFzcyBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOwogY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIExMSW50UHJvdG90eXBlTG9hZEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludDsKIGNsYXNzIE1ldGFkYXRhVGFibGU7CiBjbGFzcyBSZWdp
c3RlckF0T2Zmc2V0TGlzdDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTdHJ1Y3R1
cmVTdHViSW5mbzsKIGNsYXNzIEJhc2VsaW5lSklUQ29kZTsKIGNsYXNzIEJhc2VsaW5lSklURGF0
YTsKQEAgLTEzNCw4ICsxMzQsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsK
IAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVC
bG9jayYgb3RoZXIpOwogICAgIGJvb2wgZmluaXNoQ3JlYXRpb24oVk0mLCBTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiwgSlNTY29wZSopOwotICAg
IAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb25Db21tb24oVk0mKTsKIAogICAgIFdyaXRlQmFycmll
cjxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAKQEAgLTM2OSw4ICszNjcsNiBAQCBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAKICAgICBTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX293bmVyRXhlY3V0YWJsZS5n
ZXQoKTsgfQogICAgIAotICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIG93bmVyRWRnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb3duZXJFZGdlLmdldCgpOyB9Ci0KICAgICBWTSYgdm0oKSBjb25z
dCB7IHJldHVybiAqbV92bTsgfQogCiAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNSZWdpc3Rlcigp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT50aGlzUmVnaXN0ZXIoKTsgfQpAQCAtODQ5
LDcgKzg0NSw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2tTZXQ7Ci0gICAgZnJpZW5kIGNsYXNzIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U7CisgICAgZnJpZW5kIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJs
ZTsKKyAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFZpc2l0b3I+IEFMV0FZU19JTkxJTkUgdm9pZCB2aXNpdENoaWxkcmVuKFZpc2l0b3Im
KTsKIApAQCAtOTIzLDcgKzkyMCw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogCiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZTsK
ICAgICBXcml0ZUJhcnJpZXI8U2NyaXB0RXhlY3V0YWJsZT4gbV9vd25lckV4ZWN1dGFibGU7Ci0g
ICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fb3duZXJFZGdlOwog
ICAgIC8vIG1fdm0gbXVzdCBiZSBhIHBvaW50ZXIgKGluc3RlYWQgb2YgYSByZWZlcmVuY2UpIGJl
Y2F1c2UgdGhlIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcgogICAgIC8vIGNhbm5vdCBoYW5kbGUg
aXQgYmVpbmcgYSByZWZlcmVuY2UuCiAgICAgVk0qIG1fdm07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2ZGRiN2E2NjU3OTliNjc3NjdiMzA0
ZmU1ZjM1ODk0N2FkNDc5MzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjEyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oIgotCi0jaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKLSNpbmNsdWRlICJK
U09iamVjdElubGluZXMuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCi0KLW5hbWVz
cGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6
c19pbmZvID0geyAiRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSJfcywgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
KSB9OwotCi1TdHJ1Y3R1cmUqIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQotewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19
Ci0KLUV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6
OmNyZWF0ZShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQotewotICAgIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2UqIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtKSkgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSh2bSwg
Y29kZUJsb2NrKTsKLSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi12b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgQVNTRVJU
KCFpc0FjdGl2ZSgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLXZvaWQgRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBW
aXNpdG9yJiB2aXNpdG9yKQotewotICAgIFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsKLSAgICBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBlZGdlID0ganNDYXN0PEV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2UqPihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNlbGwsIGluZm8o
KSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsKLQotICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZWRnZS0+bV9jb2RlQmxvY2suZ2V0KCk7Ci0KLSAgICAvLyBJdCdz
IHBvc3NpYmxlIGZvciBzb21lb25lIHRvIGhvbGQgYSBwb2ludGVyIHRvIHRoZSBlZGdlIGFmdGVy
IHRoZSBlZGdlIGhhcyBjbGVhcmVkIGl0cyB3ZWFrCi0gICAgLy8gcmVmZXJlbmNlIHRvIHRoZSBj
b2RlQmxvY2suIEluIGEgY29uc2VydmF0aXZlIEdDIGxpa2Ugb3VycywgdGhhdCBjb3VsZCBoYXBw
ZW4gYXQgcmFuZG9tIGZvcgotICAgIC8vIG5vIGdvb2QgcmVhc29uIGFuZCBpdCdzIFRvdGFsbHkg
T0sgKFRNKS4gU2VlIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkgZm9yIHdoZXJlIHdlIGNsZWFy
Ci0gICAgLy8gbV9jb2RlQmxvY2suCi0gICAgaWYgKCFjb2RlQmxvY2spCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBpZiAoIWVkZ2UtPmlzQWN0aXZlKCkpIHsKLSAgICAgICAgdmlzaXRvci5h
cHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IAotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotCi0g
ICAgaWYgKGNvZGVCbG9jay0+c2hvdWxkVmlzaXRTdHJvbmdseShsb2NrZXIsIHZpc2l0b3IpKQot
ICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jayk7Ci0gICAgCi0gICAg
aWYgKCF2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZtLmV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoKS5hZGQoZWRnZSk7Ci0gICAgCi0gICAgaWYg
KEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpIHsKLSAgICAg
ICAgLy8gSWYgd2UgamV0dGlzb24gb3Vyc2VsdmVzIHdlJ2xsIGluc3RhbGwgb3VyIGFsdGVybmF0
aXZlLCBzbyBtYWtlIHN1cmUgdGhhdCBpdAotICAgICAgICAvLyBzdXJ2aXZlcyBHQyBldmVuIGlm
IHdlIGRvbid0LgotICAgICAgICB2aXNpdG9yLmFwcGVuZChjb2RlQmxvY2stPm1fYWx0ZXJuYXRp
dmUpOwotICAgIH0KLSAgICAKLSAgICAvLyBOT1RFOiBUaGVyZSBhcmUgdHdvIHNpZGVzIHRvIHRo
aXMgY29uc3RyYWludCwgd2l0aCBkaWZmZXJlbnQgcmVxdWlyZW1lbnRzIGZvciBjb3JyZWN0bmVz
cy4KLSAgICAvLyBCZWNhdXNlIGV2ZXJ5dGhpbmcgaXMgdWx0aW1hdGVseSBwcm90ZWN0ZWQgd2l0
aCB3ZWFrIHJlZmVyZW5jZXMgYW5kIGpldHRpc29uaW5nLCBpdCdzCi0gICAgLy8gYWx3YXlzICJP
SyIgdG8gY2xhaW0gdGhhdCBzb21ldGhpbmcgaXMgZGVhZCBwcmVtYXR1cmVseSBhbmQgaXQncyAi
T0siIHRvIGtlZXAgdGhpbmdzIGFsaXZlLgotICAgIC8vIEJ1dCBib3RoIGNob2ljZXMgY291bGQg
bGVhZCB0byBiYWQgcGVyZiAtIGVpdGhlciByZWNvbXAgY3ljbGVzIG9yIGxlYWtzLgotICAgIC8v
Ci0gICAgLy8gRGV0ZXJtaW5pbmcgQ29kZUJsb2NrIGxpdmVuZXNzOiBUaGlzIHBhcnQgaXMgdGhl
IG1vc3QgY29uc2VxdWVudGlhbC4gV2Ugd2FudCB0byBrZWVwIHRoZQotICAgIC8vIG91dHB1dCBj
b25zdHJhaW50IGFjdGl2ZSBzbyBsb25nIGFzIHdlIHRoaW5rIHRoYXQgd2UgbWF5IHlldCBwcm92
ZSB0aGF0IHRoZSBDb2RlQmxvY2sgaXMKLSAgICAvLyBsaXZlIGJ1dCB3ZSBoYXZlbid0IGRvbmUg
aXQgeWV0LgotICAgIC8vCi0gICAgLy8gTWFya2luZyBTdHJ1Y3R1cmVzIGlmIHByb2ZpdGFibGU6
IEl0J3MgaW1wb3J0YW50IHRoYXQgd2UgZG8gYSBwYXNzIG9mIHRoaXMuIExvZ2ljYWxseSwgdGhp
cwotICAgIC8vIHNlZW1zIGxpa2UgaXQgaXMgYSBjb25zdHJhaW50IG9mIENvZGVCbG9jay4gQnV0
IHdlIGhhdmUgYWx3YXlzIGZpcnN0IHJ1biB0aGlzIGFzIGEgcmVzdWx0Ci0gICAgLy8gb2YgdGhl
IGVkZ2UgYmVpbmcgbWFya2VkIGV2ZW4gYmVmb3JlIHdlIGRldGVybWluZSB0aGUgbGl2ZW5lc3Mg
b2YgdGhlIENvZGVCbG9jay4gVGhpcwotICAgIC8vIGFsbG93cyBhIENvZGVCbG9jayB0byBtYXJr
IGl0c2VsZiBieSBmaXJzdCBwcm92aW5nIHRoYXQgYWxsIG9mIHRoZSBTdHJ1Y3R1cmVzIGl0IHdl
YWtseQotICAgIC8vIGRlcGVuZHMgb24gY291bGQgYmUgc3Ryb25nbHkgbWFya2VkLiAoVGhpcyBw
YXJ0IGlzIGFsc28gY2FsbGVkIHByb3BhZ2F0ZVRyYW5zaXRpb25zLikKLSAgICAvLwotICAgIC8v
IEFzIGEgd2VpcmQgY2F2ZWF0LCB3ZSBvbmx5IGZpeHBvaW50IHRoZSBjb25zdHJhaW50cyBzbyBs
b25nIGFzIHRoZSBDb2RlQmxvY2sgaXMgbm90IGxpdmUuCi0gICAgLy8gVGhpcyBtZWFucyB0aGF0
IHdlIG1heSBvdmVybG9vayBzdHJ1Y3R1cmUgbWFya2luZyBvcHBvcnR1bml0aWVzIGNyZWF0ZWQg
Ynkgb3RoZXIgbWFya2luZwotICAgIC8vIHRoYXQgaGFwcGVucyBhZnRlciB0aGUgQ29kZUJsb2Nr
IGlzIG1hcmtlZC4gVGhpcyB3YXMgYW4gYWNjaWRlbnRhbCBwb2xpY3kgZGVjaXNpb24gZnJvbSBh
Ci0gICAgLy8gbG9uZyB0aW1lIGFnbywgYnV0IGl0IGlzIHByb2JhYmx5IE9LLCBzaW5jZSBpdCdz
IG9ubHkgd29ydGh3aGlsZSB0byBrZWVwIGZpeHBvaW50aW5nIHRoZQotICAgIC8vIHN0cnVjdHVy
ZSBtYXJraW5nIGlmIHdlIHN0aWxsIGhhdmUgdW5tYXJrZWQgc3RydWN0dXJlcyBhZnRlciB0aGUg
Zmlyc3Qgcm91bmQuIFdlIGFsbW9zdAotICAgIC8vIG5ldmVyIHdpbGwgYmVjYXVzZSB3ZSB3aWxs
IG1hcmstaWYtcHJvZml0YWJsZSBiYXNlZCBvbiB0aGUgb3duaW5nIGdsb2JhbCBvYmplY3QgYmVp
bmcKLSAgICAvLyBhbHJlYWR5IG1hcmtlZC4gV2UgbWFyayBpdCBqdXN0IGluIGNhc2UgdGhhdCBo
YWRuJ3QgaGFwcGVuZWQgeWV0LiBBbmQgaWYgdGhlIENvZGVCbG9jayBpcwotICAgIC8vIG5vdCB5
ZXQgbWFya2VkIGJlY2F1c2UgaXQgd2Vha2x5IGRlcGVuZHMgb24gYSBzdHJ1Y3R1cmUgdGhhdCB3
ZSBkaWQgbm90IHlldCBtYXJrLCB0aGVuIHdlCi0gICAgLy8gd2lsbCBrZWVwIGZpeHBvaW50aW5n
IHVudGlsIHRoZSBlbmQuCi0gICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKTsKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhD
b25zdHJhaW50cygpLmFkZChlZGdlKTsKLSAgICBlZGdlLT5ydW5Db25zdHJhaW50KGxvY2tlciwg
dm0sIHZpc2l0b3IpOwotfQotCi1ERUZJTkVfVklTSVRfQ0hJTERSRU4oRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2U6OnZpc2l0T3V0cHV0Q29uc3RyYWludHNJbXBsKEpTQ2VsbCogY2Vs
bCwgVmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7Ci0gICAg
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSA9IGpzQ2FzdDxFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlKj4oY2VsbCk7Ci0gICAgCi0gICAgZWRnZS0+cnVuQ29uc3RyYWludChOb0xvY2tp
bmdOZWNlc3NhcnksIHZtLCB2aXNpdG9yKTsKLX0KLQotREVGSU5FX1ZJU0lUX09VVFBVVF9DT05T
VFJBSU5UUyhFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKTsKLQotdm9pZCBFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCi17Ci0gICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2NvZGVCbG9jay5nZXQoKTsKLSAgICAKLSAgICBpZiAoIXZt
LmhlYXAuaXNNYXJrZWQoY29kZUJsb2NrKSkgewotICAgICAgICBpZiAoY29kZUJsb2NrLT5zaG91
bGRKZXR0aXNvbkR1ZVRvV2Vha1JlZmVyZW5jZSh2bSkpCi0gICAgICAgICAgICBjb2RlQmxvY2st
PmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvV2Vha1JlZmVyZW5jZSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNvZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29u
RHVlVG9PbGRBZ2UpOwotICAgICAgICBtX2NvZGVCbG9jay5jbGVhcigpOwotICAgIH0KLSAgICAK
LSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkucmVtb3Zl
KHRoaXMpOwotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRz
KCkucmVtb3ZlKHRoaXMpOwotfQotCi1pbmxpbmUgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlOjphY3RpdmF0ZSgpCi17Ci0gICAgc2V0UGVyQ2VsbEJpdCh0cnVlKTsKLX0KLQotaW5saW5l
IHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZSgpCi17Ci0gICAgc2V0
UGVyQ2VsbEJpdChmYWxzZSk7Ci19Ci0KLWlubGluZSBib29sIEV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2U6OmlzQWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcGVyQ2VsbEJpdCgpOwotfQot
Ci1Db2RlQmxvY2sqIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGVBbmRVbndy
YXAoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSkKLXsKLSAgICBpZiAoIWVkZ2UpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGVkZ2UtPmRlYWN0aXZhdGUoKTsKLSAgICByZXR1
cm4gZWRnZS0+Y29kZUJsb2NrKCk7Ci19Ci0KLUV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OndyYXAoQ29kZUJsb2NrKiBjb2RlQmxvY2spCi17Ci0g
ICAgaWYgKCFjb2RlQmxvY2spCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBj
b2RlQmxvY2stPm93bmVyRWRnZSgpOwotfQotICAgIAotRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZSogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6d3JhcEFuZEFjdGl2YXRlKENvZGVCbG9jayog
Y29kZUJsb2NrKQotewotICAgIGlmICghY29kZUJsb2NrKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiByZXN1bHQgPSBjb2RlQmxvY2stPm93
bmVyRWRnZSgpOwotICAgIHJlc3VsdC0+YWN0aXZhdGUoKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgOiBCYXNlKHZtLCB2bS5leGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlU3RydWN0dXJlLmdldCgpKQotICAgICwgbV9jb2RlQmxvY2sodm0s
IHRoaXMsIGNvZGVCbG9jaykKLXsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLXZv
aWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6cnVuQ29uc3RyYWludChjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImIGxvY2tlciwgVk0mIHZtLCBWaXNpdG9yJiB2aXNpdG9yKQotewotICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2suZ2V0KCk7Ci0gICAgCi0gICAgY29kZUJs
b2NrLT5wcm9wYWdhdGVUcmFuc2l0aW9ucyhsb2NrZXIsIHZpc2l0b3IpOwotICAgIGNvZGVCbG9j
ay0+ZGV0ZXJtaW5lTGl2ZW5lc3MobG9ja2VyLCB2aXNpdG9yKTsKLQotICAgIGlmICh2aXNpdG9y
LmlzTWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VzV2l0aENvbnN0cmFpbnRzKCkucmVtb3ZlKHRoaXMpOwotfQotCi10ZW1wbGF0ZSB2b2lkIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgVk0mLCBBYnN0cmFjdFNsb3RWaXNpdG9yJik7Ci10ZW1wbGF0ZSB2b2lkIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgVk0mLCBTbG90VmlzaXRvciYpOwotCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNhNmY5YjRlOGUx
YWFhMmU3MGEzZDAxY2YzOWYyOTY2YmM5MzQ2Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgotI2luY2x1ZGUgIklzb1N1YnNw
YWNlLmgiCi0jaW5jbHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiVk0uaCIKLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLWNsYXNzIENvZGVCbG9jazsKLWNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
LQotY2xhc3MgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwg
ewotcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0
dXJlSXNJbW1vcnRhbDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KLSAgICBzdGF0aWMgR0NDbGllbnQ6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCi0gICAgewotICAgICAgICByZXR1cm4gJnZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VTcGFjZSgpOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwotCi0gICAgc3RhdGlj
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGNyZWF0ZShWTSYsIENvZGVCbG9jayopOwotICAg
IAotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlQmxvY2suZ2V0KCk7IH0KLQotICAgIERFQ0xBUkVfVklTSVRfQ0hJTERS
RU47Ci0gICAgREVDTEFSRV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlOVFM7Ci0gICAgdm9pZCBmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOwotICAgIAotICAgIHN0YXRpYyBDb2RlQmxvY2sqIHVu
d3JhcChFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBlZGdlKQotICAgIHsKLSAgICAgICAgaWYg
KCFlZGdlKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBlZGdl
LT5jb2RlQmxvY2soKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIENvZGVCbG9jayogZGVhY3Rp
dmF0ZUFuZFVud3JhcChFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBlZGdlKTsKLSAgICAKLSAg
ICBzdGF0aWMgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogd3JhcChDb2RlQmxvY2sqIGNvZGVC
bG9jayk7Ci0gICAgCi0gICAgc3RhdGljIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIHdyYXBB
bmRBY3RpdmF0ZShDb2RlQmxvY2sqIGNvZGVCbG9jayk7Ci0KLSAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mQ29kZUJsb2NrKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2UsIG1fY29kZUJsb2NrKTsgfQotICAgIAotcHJpdmF0ZToKLSAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotCi0gICAgRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZShWTSYsIENvZGVCbG9jayopOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYp
OwotCi0gICAgdm9pZCBhY3RpdmF0ZSgpOwotICAgIHZvaWQgZGVhY3RpdmF0ZSgpOwotICAgIGJv
b2wgaXNBY3RpdmUoKSBjb25zdDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IHZv
aWQgcnVuQ29uc3RyYWludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIFZpc2l0b3Im
KTsKLQotICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCAxNzVlNWQ1ODAz
ZWIzOGQ0Y2JmZjNjZDY2ZmIyNDdmMDM0N2I2MDZhLi5hNzlhZjZkODQyNDg5NGFmYWE2YmMyMGVi
MjlmNzVlYzFhNjQ2YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTI1Miw3ICsy
NTIsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAv
LyBGSVhNRSBHbG9iYWxHQzogTmVlZCBzeW5jcmhvbml6YXRpb24gaGVyZSBmb3IgYWNjZXNzaW5n
IHRoZSBIZWFwIHNlcnZlci4KLSAgICB2bS5oZWFwLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2VBbmRTZXQuc2V0LmFkZCh0aGlzKTsKKyAgICB2bS5oZWFwLnVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2VBbmRTZXQuc2V0KCkuYWRkKHRoaXMpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCiAgICAgICAgIGNsZWFySWZEZWFkKG1f
dW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOwogICAgICAgICBpZiAoaXNDbGVhcmVkICYm
ICFpc1N0aWxsVmFsaWQpIHsKICAgICAgICAgICAgIC8vIEZJWE1FIEdsb2JhbEdDOiBOZWVkIHN5
bmNyaG9uaXphdGlvbiBoZXJlIGZvciBhY2Nlc3NpbmcgdGhlIEhlYXAgc2VydmVyLgotICAgICAg
ICAgICAgdm0uaGVhcC51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0LnNldC5y
ZW1vdmUodGhpcyk7CisgICAgICAgICAgICB2bS5oZWFwLnVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2VBbmRTZXQuc2V0KCkucmVtb3ZlKHRoaXMpOwogICAgICAgICB9CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA0ZGNmNWVkYjJjNmY3OTE4ZjUyNmM4YzcxNGI3MWY1
OWUzZGM0YzViLi42ZDIwMWRlMTJhMmU2MmI3MjkxYWQ5MGU3NGQwNjBhOWE0NzA1MDViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIGNsYXNzIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIG1fdW5saW5r
ZWRDb2RlQmxvY2tGb3JDYWxsLmNsZWFyKCk7CiAgICAgICAgIG1fdW5saW5rZWRDb2RlQmxvY2tG
b3JDb25zdHJ1Y3QuY2xlYXIoKTsKICAgICAgICAgLy8gRklYTUUgR2xvYmFsR0M6IE5lZWQgc3lu
Y3Job25pemF0aW9uIGhlcmUgZm9yIGFjY2Vzc2luZyB0aGUgSGVhcCBzZXJ2ZXIuCi0gICAgICAg
IHZtLmhlYXAudW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldC5zZXQucmVtb3Zl
KHRoaXMpOworICAgICAgICB2bS5oZWFwLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VB
bmRTZXQuc2V0KCkucmVtb3ZlKHRoaXMpOwogICAgIH0KIAogICAgIHZvaWQgcmVjb3JkUGFyc2Uo
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVG
ZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKaW5kZXggOGU1M2RkZWFkMWZkNDU1ODBmNWY5NGQ0OGVjZmFjZTE3Yzc3NzA2MS4u
ZDY0Nzc5ZDQ5MGIyMDU0MzRiYzkwNjE0MTZlNTExZjQ0YWZkNzc1OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAKQEAgLTM2OCw4ICszNjgsNiBAQCBIZWFwOjpIZWFwKFZNJiB2bSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0
cnVjdGlibGVPYmplY3QiLCAqdGhpcywgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBm
YXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4NGY1ZWQ3YTkKICAgICBGT1JfRUFD
SF9KU0NfQ09NTU9OX0lTT19TVUJTUEFDRShJTklUX1NFUlZFUl9JU09fU1VCU1BBQ0UpCiAgICAg
Rk9SX0VBQ0hfSlNDX1NUUlVDVFVSRV9JU09fU1VCU1BBQ0UoSU5JVF9TRVJWRVJfU1RSVUNUVVJF
X0lTT19TVUJTUEFDRSkKLSAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0
cmFpbnRzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKLSAgICAsIGV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNw
YWNlKQogICAgICwgY29kZUJsb2NrU3BhY2VBbmRTZXQgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIENvZGVCbG9jaykgLy8gSGFzaDoweDc3ZTY2
ZWM5CiAgICAgLCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldCBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25FeGVjdXRhYmxl
KSAvLyBIYXNoOjB4NWQxNThmMwogICAgICwgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZUFuZFNldCBJ
U09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJv
Z3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1MjdjNzdlNwpAQCAtNjc0LDE1ICs2NzIsMjggQEAg
dm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkKIHsKICAgICBWTSYg
dm0gPSB0aGlzLT52bSgpOwogICAgIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5maW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXpl
cnM8RnVuY3Rpb25FeGVjdXRhYmxlPihmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldC5zcGFj
ZSk7CisKKyAgICB7CisgICAgICAgIC8vIFdlIHJ1biB0aGlzIGJlZm9yZSBDb2RlQmxvY2sncyB1
bmNvbmRpdGlvbmFsIGZpbmFsaXplciBzaW5jZSBDb2RlQmxvY2sgbG9va3MgYXQgdGhlIG93bmVy
IGV4ZWN1dGFibGUncyBpbnN0YWxsZWQgQ29kZUJsb2NrIGluIGl0cyBmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseS4KKworICAgICAgICAvLyBGdW5jdGlvbkV4ZWN1dGFibGUgcmVxdWlyZXMgYWxsIGxp
dmUgaW5zdGFuY2VzIHRvIHJ1biBmaW5hbGl6ZXJzLiBUaHVzLCB3ZSBkbyBub3QgdXNlIGZpbmFs
aXplciBzZXQuCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
RnVuY3Rpb25FeGVjdXRhYmxlPihmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldC5zcGFjZSk7
CisKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxQcm9ncmFt
RXhlY3V0YWJsZT4ocHJvZ3JhbUV4ZWN1dGFibGVTcGFjZUFuZFNldC5zZXQoZXhlY3V0YWJsZUZp
bmFsaXplclNldCkpOworICAgICAgICBpZiAobV9ldmFsRXhlY3V0YWJsZVNwYWNlKQorICAgICAg
ICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFdmFsRXhlY3V0YWJs
ZT4obV9ldmFsRXhlY3V0YWJsZVNwYWNlLT5zZXQoZXhlY3V0YWJsZUZpbmFsaXplclNldCkpOwor
ICAgICAgICBpZiAobV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQorICAgICAgICAgICAg
ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZT4obV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLT5zZXQoZXhlY3V0YWJsZUZpbmFs
aXplclNldCkpOworICAgIH0KKwogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8U3ltYm9sVGFibGU+KHN5bWJvbFRhYmxlU3BhY2UpOwotICAgIGZpbmFsaXplTWFya2Vk
VW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4oZXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk7IC8vIFdlIHJ1biB0aGlzIGJlZm9y
ZSBDb2RlQmxvY2sncyB1bmNvbmRpdGlvbmFsIGZpbmFsaXplciBzaW5jZSBDb2RlQmxvY2sgbG9v
a3MgYXQgdGhlIG93bmVyIGV4ZWN1dGFibGUncyBpbnN0YWxsZWQgQ29kZUJsb2NrIGluIGl0cyBm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseS4KKwogICAgIGZvckVhY2hDb2RlQmxvY2tTcGFjZSgKICAg
ICAgICAgWyZdIChhdXRvJiBzcGFjZSkgewotICAgICAgICAgICAgdGhpcy0+ZmluYWxpemVNYXJr
ZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxDb2RlQmxvY2s+KHNwYWNlLnNldCk7CisgICAgICAg
ICAgICB0aGlzLT5maW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPENvZGVCbG9j
az4oc3BhY2Uuc2V0KCkpOwogICAgICAgICB9KTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXJzPFN0cnVjdHVyZVJhcmVEYXRhPihzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNl
KTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPih1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0LnNl
dCk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZT4odW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldC5z
ZXQoKSk7CiAgICAgaWYgKG1fd2Vha1NldFNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha1NldD4oKm1fd2Vha1NldFNwYWNlKTsKICAgICBp
ZiAobV93ZWFrTWFwU3BhY2UpCkBAIC0xMDAzLDcgKzEwMTQsNyBAQCB2b2lkIEhlYXA6OmRlbGV0
ZUFsbENvZGVCbG9ja3MoRGVsZXRlQWxsQ29kZUVmZm9ydCBlZmZvcnQpCiAgICAgZm9yRWFjaFNj
cmlwdEV4ZWN1dGFibGVTcGFjZSgKICAgICAgICAgWyZdIChhdXRvJiBzcGFjZUFuZFNldCkgewog
ICAgICAgICAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29wZSgqdGhpcyk7
Ci0gICAgICAgICAgICBhdXRvJiBzZXQgPSBzcGFjZUFuZFNldC5zZXQ7CisgICAgICAgICAgICBh
dXRvJiBzZXQgPSBzcGFjZUFuZFNldC5zZXQoZXhlY3V0YWJsZUNsZWFyYWJsZUNvZGVTZXQpOwog
ICAgICAgICAgICAgc2V0LmZvckVhY2hMaXZlQ2VsbCgKICAgICAgICAgICAgICAgICBbJl0gKEhl
YXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgewogICAgICAgICAgICAgICAgICAgICBTY3Jp
cHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0YWJsZSo+
KGNlbGwpOwpAQCAtMTA0MCw3ICsxMDUxLDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtl
ZENvZGVCbG9ja3MoRGVsZXRlQWxsQ29kZUVmZm9ydCBlZmZvcnQpCiAgICAgUkVMRUFTRV9BU1NF
UlQoIW1fY29sbGVjdGlvblNjb3BlKTsKIAogICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRl
cmF0aW9uU2NvcGUoKnRoaXMpOwotICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VB
bmRTZXQuc2V0LmZvckVhY2hMaXZlQ2VsbCgKKyAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlQW5kU2V0LnNldCgpLmZvckVhY2hMaXZlQ2VsbCgKICAgICAgICAgWyZdIChIZWFwQ2Vs
bCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKICAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqPihjZWxsKTsKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPmNsZWFyQ29kZSh2bSk7CkBA
IC0yOTE3LDcgKzI5MjgsMTIgQEAgdm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgU2V0Um9vdE1hcmtSZWFzb25TY29wZSByb290
U2NvcGUodmlzaXRvciwgUm9vdE1hcmtSZWFzb246OkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
KTsKLSAgICAgICAgICAgICAgICBhZGQoaGVhcC0+ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNX
aXRoQ29uc3RyYWludHMpOworICAgICAgICAgICAgICAgIGFkZChoZWFwLT5mdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZUFuZFNldC5zZXQoZXhlY3V0YWJsZU91dHB1dENvbnN0cmFpbnRzU2V0KSk7Cisg
ICAgICAgICAgICAgICAgYWRkKGhlYXAtPnByb2dyYW1FeGVjdXRhYmxlU3BhY2VBbmRTZXQuc2V0
KGV4ZWN1dGFibGVPdXRwdXRDb25zdHJhaW50c1NldCkpOworICAgICAgICAgICAgICAgIGlmICho
ZWFwLT5tX2V2YWxFeGVjdXRhYmxlU3BhY2UpCisgICAgICAgICAgICAgICAgICAgIGFkZChoZWFw
LT5tX2V2YWxFeGVjdXRhYmxlU3BhY2UtPnNldChleGVjdXRhYmxlT3V0cHV0Q29uc3RyYWludHNT
ZXQpKTsKKyAgICAgICAgICAgICAgICBpZiAoaGVhcC0+bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZVNwYWNlKQorICAgICAgICAgICAgICAgICAgICBhZGQoaGVhcC0+bV9tb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZVNwYWNlLT5zZXQoZXhlY3V0YWJsZU91dHB1dENvbnN0cmFpbnRzU2V0KSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaGVhcC0+bV93ZWFrTWFwU3BhY2UpIHsKICAgICAg
ICAgICAgICAgICBTZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBSb290
TWFya1JlYXNvbjo6V2Vha01hcFNwYWNlKTsKQEAgLTMxNjksMTggKzMxODUsMTggQEAgRk9SX0VB
Q0hfSlNDX0RZTkFNSUNfSVNPX1NVQlNQQUNFKERFRklORV9EWU5BTUlDX0lTT19TVUJTUEFDRV9N
RU1CRVJfU0xPVykKIAogI3VuZGVmIERFRklORV9EWU5BTUlDX0lTT19TVUJTUEFDRV9NRU1CRVJf
U0xPVwogCi0jZGVmaW5lIERFRklORV9EWU5BTUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NMT1co
bmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCisjZGVmaW5lIERFRklORV9EWU5BTUlDX1NQQUNF
X0FORF9TRVRfTUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlLCBzcGFjZVR5cGUp
IFwKICAgICBJc29TdWJzcGFjZSogSGVhcDo6bmFtZSMjU2xvdygpIFwKICAgICB7IFwKICAgICAg
ICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8
U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBoZWFwQ2VsbFR5cGUsIHR5cGUp
OyBcCisgICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVlPHNwYWNlVHlwZT4gSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKICAgICAgICAgV1RGOjpzdG9y
ZVN0b3JlRmVuY2UoKTsgXAogICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCiAg
ICAgICAgIHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCiAgICAgfQogCi1ERUZJTkVfRFlOQU1J
Q19TUEFDRV9BTkRfU0VUX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV2YWxFeGVjdXRhYmxlKSAvLyBIYXNoOjB4OTU4ZTNlOWQK
LURFRklORV9EWU5BTUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NMT1cobW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NTA2ZmEzYworREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5E
X1NFVF9NRU1CRVJfU0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBFdmFsRXhlY3V0YWJsZSwgSGVhcDo6RXhlY3V0YWJsZVNwYWNlQW5kU2V0KSAv
LyBIYXNoOjB4OTU4ZTNlOWQKK0RFRklORV9EWU5BTUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NM
T1cobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUsIEhlYXA6OkV4ZWN1dGFibGVTcGFjZUFuZFNl
dCkgLy8gSGFzaDoweDY1MDZmYTNjCiAKICN1bmRlZiBERUZJTkVfRFlOQU1JQ19TUEFDRV9BTkRf
U0VUX01FTUJFUl9TTE9XCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBhZjBlNGM0
NmE2Y2VhNzA2YmNiMWFlZWM0MTJmMTlkNTFiYjQ4MTUyLi5jN2ZhZDFkMDg3OGFiNjA1ZDkwM2Y5
YjUwZDhmOWE5OTVhMjU5Y2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0xMjAs
NyArMTIwLDYgQEAgY2xhc3MgSGVhcDsKICAgICB2KGRhdGVJbnN0YW5jZVNwYWNlLCBkYXRlSW5z
dGFuY2VIZWFwQ2VsbFR5cGUsIERhdGVJbnN0YW5jZSkgXAogICAgIHYoZG9tQXR0cmlidXRlR2V0
dGVyU2V0dGVyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIERPTUF0dHJpYnV0ZUdldHRlclNldHRl
cikgXAogICAgIHYoZXhjZXB0aW9uU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEV4Y2VwdGlvbikgXAotICAgIHYoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKSBcCiAgICAgdihmdW5jdGlv
blNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0Z1bmN0aW9uKSBcCiAgICAgdihnZXR0ZXJTZXR0
ZXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgR2V0dGVyU2V0dGVyKSBcCiAgICAgdihnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnRTcGFjZSwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxU
eXBlLCBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCkgXApAQCAtMTAyOSwxMCArMTAyOCw3IEBA
IGNsYXNzIEhlYXAgewogICAgIEZPUl9FQUNIX0pTQ19EWU5BTUlDX0lTT19TVUJTUEFDRShERUZJ
TkVfRFlOQU1JQ19JU09fU1VCU1BBQ0VfTUVNQkVSKQogI3VuZGVmIERFRklORV9EWU5BTUlDX0lT
T19TVUJTUEFDRV9NRU1CRVIKICAgICAKLSAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzOwotICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoRmluYWxpemVyczsKLQotI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9T
RVRfREVGSU5FX01FTUJFUihuYW1lKSBcCisjZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9E
RUZJTkVfTUVNQkVSKG5hbWUsIHR5cGUpIFwKICAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBt
b2RlPiBcCiAgICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCiAgICAgeyBcCkBAIC0xMDQzLDMxICsx
MDM5LDQ5IEBAIGNsYXNzIEhlYXAgewogICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCiAg
ICAgfSBcCiAgICAgSXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsgXAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxTcGFjZUFuZFNldD4gbV8jI25hbWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPHR5cGU+IG1f
IyNuYW1lOwogICAgIAorICAgIHRlbXBsYXRlPHNpemVfdCBOPgogICAgIHN0cnVjdCBTcGFjZUFu
ZFNldCB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAorICAgICAg
ICBjbGFzcyBTZXRzIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgdGVtcGxhdGU8c2l6
ZV90Li4uIElzPgorICAgICAgICAgICAgU2V0cyhJc29TdWJzcGFjZSYgc3BhY2UsIHN0ZDo6aW5k
ZXhfc2VxdWVuY2U8SXMuLi4+KQorICAgICAgICAgICAgICAgIDogc2V0cyB7ICgodm9pZClJcywg
SXNvQ2VsbFNldCB7IHNwYWNlIH0pLi4uIH0KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgSXNvQ2VsbFNldCBzZXRzW05dOworICAgICAgICB9OworCiAgICAgICAg
IElzb1N1YnNwYWNlIHNwYWNlOwotICAgICAgICBJc29DZWxsU2V0IHNldDsKKyAgICAgICAgU2V0
cyBzZXRzOwogICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgogICAgICAgICBTcGFjZUFuZFNldChBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgICAg
ICAgICA6IHNwYWNlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCi0gICAg
ICAgICAgICAsIHNldChzcGFjZSkKKyAgICAgICAgICAgICwgc2V0cyhzcGFjZSwgc3RkOjptYWtl
X2luZGV4X3NlcXVlbmNlPE4+eyB9KQogICAgICAgICB7CiAgICAgICAgIH0KKworICAgICAgICBJ
c29DZWxsU2V0JiBzZXQodW5zaWduZWQgaW5kZXggPSAwKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gc2V0cy5zZXRzW2luZGV4XTsKKyAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
c3RhdGljIElzb0NlbGxTZXQmIHNldEZvcihTdWJzcGFjZSYgc3BhY2UpCisgICAgICAgIHN0YXRp
YyBJc29DZWxsU2V0JiBzZXRGb3IoU3Vic3BhY2UmIHNwYWNlLCB1bnNpZ25lZCBpbmRleCA9IDAp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PElzb0NlbGxTZXQq
PigKICAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZzcGFjZSkgLQogICAgICAg
ICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc3BhY2UpICsKLSAgICAgICAg
ICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNldCkpOworICAgICAgICAgICAg
ICAgIE9CSkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc2V0cykgKyBzaXplb2YoSXNvQ2VsbFNl
dCkgKiBpbmRleCk7CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgU3BhY2VBbmRTZXQgY29kZUJs
b2NrU3BhY2VBbmRTZXQ7CisgICAgdXNpbmcgQ29kZUJsb2NrU3BhY2VBbmRTZXQgPSBTcGFjZUFu
ZFNldDwxPjsKKyAgICBDb2RlQmxvY2tTcGFjZUFuZFNldCBjb2RlQmxvY2tTcGFjZUFuZFNldDsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoQ29kZUJsb2Nr
U3BhY2UoY29uc3QgRnVuYyYgZnVuYykKQEAgLTEwNzUsMTAgKzEwODksMTUgQEAgY2xhc3MgSGVh
cCB7CiAgICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2VBbmRTZXQpOwogICAgIH0KIAotICAgIERZ
TkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVjdXRhYmxlU3BhY2UpCi0g
ICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGVTcGFjZSkKLSAgICBTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNl
dDsKLSAgICBTcGFjZUFuZFNldCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlQW5kU2V0OworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZXhlY3V0YWJsZUNsZWFyYWJsZUNvZGVTZXQgPSAwOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZXhlY3V0YWJsZU91dHB1dENvbnN0cmFpbnRz
U2V0ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGV4ZWN1dGFibGVGaW5hbGl6
ZXJTZXQgPSAyOworCisgICAgdXNpbmcgRXhlY3V0YWJsZVNwYWNlQW5kU2V0ID0gU3BhY2VBbmRT
ZXQ8Mz47IC8vIENsZWFyYWJsZUNvZGVTZXQsIE91dHB1dENvbnN0cmFpbnRzLCBGaW5hbGl6ZXJz
LgorICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVjdXRhYmxl
U3BhY2UsIEV4ZWN1dGFibGVTcGFjZUFuZFNldCkKKyAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRf
REVGSU5FX01FTUJFUihtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBFeGVjdXRhYmxlU3Bh
Y2VBbmRTZXQpCisgICAgRXhlY3V0YWJsZVNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlQW5kU2V0OworICAgIEV4ZWN1dGFibGVTcGFjZUFuZFNldCBwcm9ncmFtRXhlY3V0YWJsZVNw
YWNlQW5kU2V0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVh
Y2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKQEAgLTEwOTEsNyArMTEx
MCw4IEBAIGNsYXNzIEhlYXAgewogICAgICAgICBmdW5jKHByb2dyYW1FeGVjdXRhYmxlU3BhY2VB
bmRTZXQpOwogICAgIH0KIAotICAgIFNwYWNlQW5kU2V0IHVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2VBbmRTZXQ7CisgICAgdXNpbmcgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZUFuZFNldCA9IFNwYWNlQW5kU2V0PDE+OworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2VBbmRTZXQgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldDsKIAogICAg
IFZlY3RvcjxJc29TdWJzcGFjZVBlclZNKj4gcGVyVk1Jc29TdWJzcGFjZXM7CiAjdW5kZWYgRFlO
QU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb0NlbGxTZXQuaAppbmRleCBjY2I4NDVlYTExZmJlYThlMmFkY2U1NjYxYmRlYThjMjFlOWEy
YTlmLi44YmQ3ZTdlYTVhOTQyM2VhZWFhYzBmOTQ5YzEwYzRjMWYwYmE3Y2QwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVk
ZSA8d3RmL0JpdG1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Db25jdXJyZW50VmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
KyNpbmNsdWRlIDx3dGYvTm9ubW92YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtl
ZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgogCkBAIC00MCw3ICs0Miw5IEBA
IGNsYXNzIElzb1N1YnNwYWNlOwogLy8gQ3JlYXRlIGEgc2V0IG9mIGNlbGxzIHRoYXQgYXJlIGlu
IGFuIElzb1N1YnNwYWNlLiBUaGlzIGFsbG93cyBjb25jdXJyZW50IE8oMSkgc2V0IGluc2VydGlv
biBhbmQKIC8vIHJlbW92YWwuIEVhY2ggc3VjaCBzZXQgc2hvdWxkIGJlIHRob3VnaHQgb2YgYXMg
YSAwLjglIGluY3JlYXNlIGluIG9iamVjdCBzaXplIGZvciBvYmplY3RzIGluIHRoYXQKIC8vIElz
b1N1YnNwYWNlIChpdCdzIGxpa2UgYWRkaW5nIDEgYml0IGV2ZXJ5IDE2IGJ5dGVzLCBvciAxIGJp
dCBldmVyeSAxMjggYml0cykuCi1jbGFzcyBJc29DZWxsU2V0IDogcHVibGljIFBhY2tlZFJhd1Nl
bnRpbmVsTm9kZTxJc29DZWxsU2V0PiB7CitjbGFzcyBJc29DZWxsU2V0IGZpbmFsIDogcHVibGlj
IFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxJc29DZWxsU2V0PiB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSXNvQ2VsbFNldCk7CisgICAgV1RGX01BS0VfTk9OTU9WQUJMRShJc29DZWxsU2V0KTsK
IHB1YmxpYzoKICAgICBJc29DZWxsU2V0KElzb1N1YnNwYWNlJiBzdWJzcGFjZSk7CiAgICAgfklz
b0NlbGxTZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBmMTIzNTU3ODIwYzM0
Zjg3NjJjMThhOTUwM2YzYTk2ZjdiNGM2NDEyLi5lZDhmYjBmNTNlNTdhNWE1MDJmMWNhMjc2MDU0
NjcwOTAwZThiZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMTUsOCArMjE1
LDYgQEAgdm9pZCBKSVQ6OmVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJSZWcg
cmVzdWx0KQogICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvbkV4ZWN1dGFi
bGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ29uc3RydWN0KCkpLCByZXN1bHQpOwogICAgIGVsc2UK
ICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZz
ZXRPZkNvZGVCbG9ja0ZvckNhbGwoKSksIHJlc3VsdCk7Ci0KLSAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVzdWx0LCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpvZmZzZXRPZkNvZGVCbG9jaygpKSwg
cmVzdWx0KTsKICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVzdWx0LCBDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAzZTJjNmRm
NjBhNDc4Y2ExMDlhYWRhOGMzM2Q2MGM5OTRiNWQzYzAxLi4xZmRiNGE1N2Q1OTRiZWVhNmViYjgw
YWE2OTdiZGFkNDNmOTBmODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNDkzLDcgKzE0OTMsNiBAQCBtYWNybyBm
dW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCiAgICAgbG9hZHAg
KEZ1bmN0aW9uUmFyZURhdGE6Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6
cmFyZURhdGFUYWcpKVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCiAuaXNFeGVjdXRh
YmxlOgogICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3Rh
cmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBsb2FkcCBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOjptX2NvZGVCbG9ja1t0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCiBl
bmQKIAogbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVn
aXN0ZXIpCkBAIC0xNTA3LDcgKzE1MDYsNiBAQCBtYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENv
ZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKICAgICBsb2FkcCAoRnVuY3Rpb25SYXJlRGF0
YTo6bV9leGVjdXRhYmxlIC0gKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpW3Rh
cmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKIC5pc0V4ZWN1dGFibGU6CiAgICAgbG9hZHAg
RnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdpc3Rl
cl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgbG9hZHAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6
bV9jb2RlQmxvY2tbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgogZW5kCiAKIG1hY3Jv
IG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmlu
ZGV4IGNhMDBmYjFjNmI2ZGE2OTc2ZmNiMTZlMTY3ZWY2ODI0MTZlMTcxNjAuLjlkNjg1YTc1MmM2
NWY4NWI1NTg2ZGY4ZTUzMDBkMGFjZTYzZDZhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTYzLDcgKzYz
LDcgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxDb2RlQmxvY2suc2V0KHZtLCBl
eGVjdXRhYmxlLCB1bmxpbmtlZEV2YWxDb2RlKTsKKyAgICBleGVjdXRhYmxlLT5tX3VubGlua2Vk
Q29kZUJsb2NrLnNldCh2bSwgZXhlY3V0YWJsZSwgdW5saW5rZWRFdmFsQ29kZSk7CiAKICAgICBy
ZXR1cm4gZXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V2YWxFeGVjdXRhYmxlLmNwcAppbmRleCBkZDg0OTMzODJmZjYxNDEwYmJlZWVkZDBiYmUyNzdk
YzUyMDhlNjJmLi5iODg0OWNjZTExNTdjNmQxZTM0MWVhZWZkZmExZjQxYjhjMmVmMTAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwCkBA
IC01Niw4ICs1Niw2IEBAIHZvaWQgRXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpT
Q2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICBFdmFsRXhlY3V0YWJsZSogdGhpc09i
amVjdCA9IGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
dW5saW5rZWRFdmFsQ29kZUJsb2NrKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X2V2YWxDb2RlQmxvY2spOwogICAgIGlmIChUZW1wbGF0ZU9iamVjdE1hcCogbWFwID0gdGhpc09i
amVjdC0+bV90ZW1wbGF0ZU9iamVjdE1hcC5nZXQoKSkgewogICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgdGhpc09iamVjdC0+Y2VsbExvY2soKSB9OwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
Km1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVj
dXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5o
CmluZGV4IDY2MzA1NGZhNTY3YjNkYWZiZjEwM2QyODU5NzNhY2Q4MTU0YmQyNzYuLmU4NWEzYTdh
MzVmZWZjYjNhNjYyYjBmZjBjODRkZDBhYTEyODk5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNs
dWRlICJHbG9iYWxFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRFdmFsQ29kZUJsb2Nr
LmgiCiAKQEAgLTM5LDkgKzM4LDE0IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVibGljIEds
b2JhbEV4ZWN1dGFibGUgewogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAg
ICAKLSAgICBFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2soKQorICAgIEV2YWxDb2RlQmxvY2sqIGNv
ZGVCbG9jaygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEV2YWxD
b2RlQmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9ldmFsQ29kZUJs
b2NrLmdldCgpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RXZhbENvZGVCbG9jayo+
KEJhc2U6OmNvZGVCbG9jaygpKTsKKyAgICB9CisKKyAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8VW5saW5rZWRFdmFsQ29kZUJsb2NrKj4oQmFzZTo6dW5saW5rZWRDb2RlQmxvY2soKSk7
CiAgICAgfQogCiAgICAgUmVmPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQpAQCAtNjIsMTAg
KzY2LDEwIEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUg
ewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9Ci0gICAgdW5z
aWduZWQgbnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKSB7IHJldHVybiBtX3VubGlua2Vk
RXZhbENvZGVCbG9jay0+bnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKTsgfQotICAgIHVu
c2lnbmVkIG51bVRvcExldmVsRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFs
Q29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQotICAgIGJvb2wgYWxsb3dEaXJl
Y3RFdmFsQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+YWxs
b3dEaXJlY3RFdmFsQ2FjaGUoKTsgfQorICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0
dXJuIHVubGlua2VkQ29kZUJsb2NrKCktPm51bVZhcmlhYmxlcygpOyB9CisgICAgdW5zaWduZWQg
bnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKSB7IHJldHVybiB1bmxpbmtlZENvZGVCbG9j
aygpLT5udW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpOyB9CisgICAgdW5zaWduZWQgbnVt
VG9wTGV2ZWxGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2soKS0+bnVt
YmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KKyAgICBib29sIGFsbG93RGlyZWN0RXZhbENhY2hlKCkg
Y29uc3QgeyByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2soKS0+YWxsb3dEaXJlY3RFdmFsQ2FjaGUo
KTsgfQogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI+KG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOyB9CiAgICAgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCk7IH0KICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0m
KTsKQEAgLTgyLDggKzg2LDYgQEAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgR2xvYmFs
RXhlY3V0YWJsZSB7CiAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6
IDE7CiAgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAKLSAgICBX
cml0ZUJhcnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9ldmFsQ29kZUJsb2NrOwot
ICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+IG1fdW5saW5rZWRFdmFsQ29k
ZUJsb2NrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0ZU9iamVjdE1hcD4gbV90ZW1wbGF0
ZU9iamVjdE1hcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGQ4MWFjNjA2Zjc0ZDg1MmI4ZGJlZTkzZGRk
NTY3NjU4YmUwNzQ5OTQuLjUzNTAxNmM2NTk0YzQ3NmZlN2NjODhhNjkzMDI4ZWYyYjIzYTg4YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcApAQCAtMjQsMTAgKzI0LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKKyNpbmNsdWRlICJGdW5jdGlvbkV4
ZWN1dGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25PdmVycmlkZXMuaCIKKyNpbmNs
dWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTUsMjcgKzU4LDI2IEBAIHZvaWQgRnVuY3Rpb25FeGVj
dXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6YmFzZWxpbmVDb2RlQmxvY2tGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQogewotICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2U7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBudWxscHRyOwogICAgIGlmIChraW5kID09IENvZGVGb3JDYWxs
KQotICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpOworICAgICAgICBjb2Rl
QmxvY2sgPSBjb2RlQmxvY2tGb3JDYWxsKCk7CiAgICAgZWxzZSB7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7Ci0gICAgICAgIGVkZ2UgPSBtX2NvZGVC
bG9ja0ZvckNvbnN0cnVjdC5nZXQoKTsKKyAgICAgICAgY29kZUJsb2NrID0gY29kZUJsb2NrRm9y
Q29uc3RydWN0KCk7CiAgICAgfQotICAgIGlmICghZWRnZSkKKyAgICBpZiAoIWNvZGVCbG9jaykK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9u
Q29kZUJsb2NrKj4oZWRnZS0+Y29kZUJsb2NrKCktPmJhc2VsaW5lQWx0ZXJuYXRpdmUoKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4oY29kZUJsb2NrLT5iYXNl
bGluZUFsdGVybmF0aXZlKCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgogdm9p
ZCBGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlz
aXRvciYgdmlzaXRvcikKIHsKKyAgICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7CiAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNl
bGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
ICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdG9wTGV2ZWxFeGVjdXRhYmxlKTsKLSAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNhbGwpOwotICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0KTsKICAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkRXhlY3V0YWJsZSk7CiAgICAgaWYgKFJhcmVEYXRh
KiByYXJlRGF0YSA9IHRoaXNPYmplY3QtPm1fcmFyZURhdGEuZ2V0KCkpIHsKICAgICAgICAgdmlz
aXRvci5hcHBlbmQocmFyZURhdGEtPm1fY2FjaGVkUG9seVByb3RvU3RydWN0dXJlSUQpOwpAQCAt
ODYsMTAgKzg4LDM5IEBAIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1w
bChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgICAgICAgICAgdmlzaXRv
ci5hcHBlbmQoZW50cnkudmFsdWUpOwogICAgICAgICB9CiAgICAgfQorCisgICAgLy8gU2luY2Ug
RnVuY3Rpb25FeGVjdXRhYmxlJ3MgZmluYWxpemVyIGFsd2F5cyBuZWVkcyB0byBiZSBydW4sIHdl
IGRvIG5vdCB0cmFjayBpdCB2aWEgZXhlY3V0YWJsZUZpbmFsaXplclNldC4KKyAgICBib29sIHNo
b3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQgPSBmYWxzZTsKKyAgICBpZiAoYXV0byogY29kZUJsb2Nr
ID0gdGhpc09iamVjdC0+bV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpKQorICAgICAgICBzaG91bGRL
ZWVwSW5Db25zdHJhaW50U2V0IHw9IHZpc2l0Q29kZUJsb2NrRWRnZSh2aXNpdG9yLCBjb2RlQmxv
Y2spOworICAgIGlmIChhdXRvKiBjb2RlQmxvY2sgPSB0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0Zv
ckNvbnN0cnVjdC5nZXQoKSkKKyAgICAgICAgc2hvdWxkS2VlcEluQ29uc3RyYWludFNldCB8PSB2
aXNpdENvZGVCbG9ja0VkZ2UodmlzaXRvciwgY29kZUJsb2NrKTsKKyAgICBpZiAoc2hvdWxkS2Vl
cEluQ29uc3RyYWludFNldCkKKyAgICAgICAgdm0uaGVhcC5mdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZUFuZFNldC5zZXQoSGVhcDo6ZXhlY3V0YWJsZU91dHB1dENvbnN0cmFpbnRzU2V0KS5hZGQodGhp
c09iamVjdCk7CiB9CiAKIERFRklORV9WSVNJVF9DSElMRFJFTihGdW5jdGlvbkV4ZWN1dGFibGUp
OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6
OnZpc2l0T3V0cHV0Q29uc3RyYWludHNJbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7CisgICAgYXV0byogZXhlY3V0YWJsZSA9
IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKKyAgICBib29sIHNob3VsZEtlZXBJ
bkNvbnN0cmFpbnRTZXQgPSBmYWxzZTsKKyAgICBpZiAoQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjdXRhYmxlLT5jb2RlQmxvY2tGb3JDYWxsKCkpIHsKKyAgICAgICAgaWYgKCF2aXNpdG9yLmlz
TWFya2VkKGNvZGVCbG9jaykpCisgICAgICAgICAgICBzaG91bGRLZWVwSW5Db25zdHJhaW50U2V0
IHw9IHJ1bkNvbnN0cmFpbnQoTm9Mb2NraW5nTmVjZXNzYXJ5LCB2aXNpdG9yLCBjb2RlQmxvY2sp
OworICAgIH0KKyAgICBpZiAoQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2Rl
QmxvY2tGb3JDb25zdHJ1Y3QoKSkgeworICAgICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29k
ZUJsb2NrKSkKKyAgICAgICAgICAgIHNob3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQgfD0gcnVuQ29u
c3RyYWludChOb0xvY2tpbmdOZWNlc3NhcnksIHZpc2l0b3IsIGNvZGVCbG9jayk7CisgICAgfQor
ICAgIGlmICghc2hvdWxkS2VlcEluQ29uc3RyYWludFNldCkKKyAgICAgICAgdm0uaGVhcC5mdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldC5zZXQoSGVhcDo6ZXhlY3V0YWJsZU91dHB1dENvbnN0
cmFpbnRzU2V0KS5yZW1vdmUoZXhlY3V0YWJsZSk7Cit9CisKK0RFRklORV9WSVNJVF9PVVRQVVRf
Q09OU1RSQUlOVFMoRnVuY3Rpb25FeGVjdXRhYmxlKTsKKwogRnVuY3Rpb25FeGVjdXRhYmxlKiBG
dW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogICAgIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgCiAgICAgSlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIs
IHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25F
eGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1
dGFibGUuaAppbmRleCAwYTkxMmFlNWVmNzJkMDE1OGViZDVjZWRjZTU2MjRiNjE1MTkyYWJlLi4z
N2UwYzVkYjYxYWNhNjQyZTVlZmRmNjg2MTJmMDIzMWM0NThmZmVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMjUsNyAr
MjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2UuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
YWJsZS5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKQEAgLTY5LDM0ICs2OCwzMSBAQCBjbGFz
cyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAg
ICAgLy8gUmV0dXJucyBlaXRoZXIgY2FsbCBvciBjb25zdHJ1Y3QgYnl0ZWNvZGUuIFRoaXMgY2Fu
IGJlIGFwcHJvcHJpYXRlCiAgICAgLy8gZm9yIGFuc3dlcmluZyBxdWVzdGlvbnMgdGhhdCB0aGF0
IGRvbid0IHZhcnkgYmV0d2VlbiBjYWxsIGFuZCBjb25zdHJ1Y3QgLS0KICAgICAvLyBmb3IgZXhh
bXBsZSwgYXJndW1lbnRzUmVnaXN0ZXIoKS4KLSAgICBGdW5jdGlvbkNvZGVCbG9jayogZWl0aGVy
Q29kZUJsb2NrKCkKKyAgICBGdW5jdGlvbkNvZGVCbG9jayogZWl0aGVyQ29kZUJsb2NrKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2U7Ci0gICAg
ICAgIGlmIChtX2NvZGVCbG9ja0ZvckNhbGwpCi0gICAgICAgICAgICBlZGdlID0gbV9jb2RlQmxv
Y2tGb3JDYWxsLmdldCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlZGdlID0gbV9jb2Rl
QmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVu
Y3Rpb25Db2RlQmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAoZWRnZSkp
OworICAgICAgICBpZiAoYXV0byogcmVzdWx0ID0gY29kZUJsb2NrRm9yQ2FsbCgpKQorICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIGNvZGVCbG9ja0ZvckNvbnN0cnVj
dCgpOwogICAgIH0KICAgICAgICAgCiAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuICEhbV9jb2RlQmxvY2tGb3JDYWxsOworICAgICAgICBy
ZXR1cm4gISFjb2RlQmxvY2tGb3JDYWxsKCk7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Db2RlQmxv
Y2sqIGNvZGVCbG9ja0ZvckNhbGwoKQorICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tG
b3JDYWxsKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rp
b25Db2RlQmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9jb2RlQmxv
Y2tGb3JDYWxsLmdldCgpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25D
b2RlQmxvY2sqPihtX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCkpOwogICAgIH0KIAogICAgIGJvb2wg
aXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEh
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CisgICAgICAgIHJldHVybiAhIWNvZGVCbG9ja0ZvckNv
bnN0cnVjdCgpOwogICAgIH0KIAotICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JD
b25zdHJ1Y3QoKQorICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3Qo
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxGdW5jdGlvbkNvZGVC
bG9jayo+KEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnVud3JhcChtX2NvZGVCbG9ja0ZvckNv
bnN0cnVjdC5nZXQoKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEZ1bmN0aW9uQ29k
ZUJsb2NrKj4obV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCkpOwogICAgIH0KICAgICAgICAg
CiAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBA
IC0xMjIsNiArMTE4LDggQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Io
a2luZCk7CiAgICAgfQogCisgICAgRnVuY3Rpb25Db2RlQmxvY2sqIHJlcGxhY2VDb2RlQmxvY2tX
aXRoKFZNJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgQ29kZUJsb2NrKik7CisKICAgICBSZWZQ
dHI8VHlwZVNldD4gcmV0dXJuU3RhdGVtZW50VHlwZVNldCgpIAogICAgIHsKICAgICAgICAgUmFy
ZURhdGEmIHJhcmVEYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKQEAgLTE2Miw2ICsxNjAsNyBAQCBj
bGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7
CiAgICAgU291cmNlQ29kZSBjbGFzc1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5jbGFzc1NvdXJjZSgpOyB9CiAKICAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVO
OworICAgIERFQ0xBUkVfVklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTOwogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG8pCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKEZ1bmN0aW9uRXhlY3V0YWJsZVR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKQEAgLTMzMSw4ICszMzAsOCBAQCBjbGFzcyBG
dW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwogICAgIFdyaXRlQmFycmllcjxT
Y3JpcHRFeGVjdXRhYmxlPiBtX3RvcExldmVsRXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fdW5saW5rZWRFeGVjdXRhYmxlOwotICAgIFdy
aXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX2NvZGVCbG9ja0ZvckNhbGw7
Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fY29kZUJsb2Nr
Rm9yQ29uc3RydWN0OworICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrRm9y
Q2FsbDsKKyAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVj
dDsKICAgICBJbmZlcnJlZFZhbHVlPEpTRnVuY3Rpb24+IG1fc2luZ2xldG9uOwogICAgIEJveDxJ
bmxpbmVXYXRjaHBvaW50U2V0PiBtX3BvbHlQcm90b1dhdGNocG9pbnQ7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5s
aW5lcy5oCmluZGV4IGM5YTBiMTIyNDA0MzMyOTcxYTE2YzI4YTZkMTVmNTRlZjNmNTBkOGMuLjY2
YzBmZjg0NGE5NDFhYzQxOWE3OGUwOTI4YzI2MWRmODAxZTQ4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVz
LmgKQEAgLTMzLDkgKzMzLDI1IEBAIG5hbWVzcGFjZSBKU0MgewogaW5saW5lIHZvaWQgRnVuY3Rp
b25FeGVjdXRhYmxlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCiB7CiAgICAgbV9z
aW5nbGV0b24uZmluYWxpemVVbmNvbmRpdGlvbmFsbHkodm0pOworICAgIGZpbmFsaXplQ29kZUJs
b2NrRWRnZSh2bSwgbV9jb2RlQmxvY2tGb3JDYWxsKTsKKyAgICBmaW5hbGl6ZUNvZGVCbG9ja0Vk
Z2Uodm0sIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0KTsKKyAgICB2bS5oZWFwLmZ1bmN0aW9uRXhl
Y3V0YWJsZVNwYWNlQW5kU2V0LnNldCgxKS5yZW1vdmUodGhpcyk7CiB9CiAKLUpTU3RyaW5nKiBG
dW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CitpbmxpbmUgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6cmVwbGFjZUNv
ZGVCbG9ja1dpdGgoVk0mIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIENvZGVCbG9j
ayogbmV3Q29kZUJsb2NrKQoreworICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAg
ICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBvbGRDb2RlQmxvY2sgPSBjb2RlQmxvY2tGb3JDYWxsKCk7
CisgICAgICAgIG1fY29kZUJsb2NrRm9yQ2FsbC5zZXQodm0sIHRoaXMsIG5ld0NvZGVCbG9jayk7
CisgICAgICAgIHJldHVybiBvbGRDb2RlQmxvY2s7CisgICAgfQorICAgIEFTU0VSVChraW5kID09
IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBvbGRDb2RlQmxvY2sg
PSBjb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKTsKKyAgICBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5z
ZXQodm0sIHRoaXMsIG5ld0NvZGVCbG9jayk7CisgICAgcmV0dXJuIG9sZENvZGVCbG9jazsKK30K
KworaW5saW5lIEpTU3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgUmFyZURhdGEmIHJhcmVEYXRhID0gZW5zdXJl
UmFyZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLm1fYXNTdHJpbmcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDc1ZTg0
YjM4ZmY3MjdiMzJjOGViMDAxMTZhMGIxZDBhZDg0MGJmZWQuLjNiMDkxY2M5YWQzYjViMWFmYmNh
NmY2ZGExMGU1NzBkZTcxNjQ2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuY3BwCkBAIC0yNiwxMCArMjYsNTggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJHbG9iYWxFeGVjdXRhYmxlLmgiCiAKKyNpbmNsdWRlICJJ
c29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBHbG9iYWxFeGVjdXRhYmxlOjpzX2luZm8gPSB7
ICJHbG9iYWxFeGVjdXRhYmxlIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEdsb2JhbEV4ZWN1dGFibGUpIH07CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFZpc2l0b3I+Cit2b2lkIEdsb2JhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpT
Q2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiBleGVjdXRhYmxlID0g
anNDYXN0PEdsb2JhbEV4ZWN1dGFibGUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGV4ZWN1dGFibGUsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihleGVj
dXRhYmxlLCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZChleGVjdXRhYmxlLT5tX3VubGlu
a2VkQ29kZUJsb2NrKTsKKworICAgIGlmIChhdXRvKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5j
b2RlQmxvY2soKSkgeworICAgICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrKSkK
KyAgICAgICAgICAgIEhlYXA6OkV4ZWN1dGFibGVTcGFjZUFuZFNldDo6c2V0Rm9yKCpleGVjdXRh
YmxlLT5zdWJzcGFjZSgpLCBIZWFwOjpleGVjdXRhYmxlRmluYWxpemVyU2V0KS5hZGQoZXhlY3V0
YWJsZSk7CisgICAgICAgIGlmICh2aXNpdENvZGVCbG9ja0VkZ2UodmlzaXRvciwgY29kZUJsb2Nr
KSkKKyAgICAgICAgICAgIEhlYXA6OkV4ZWN1dGFibGVTcGFjZUFuZFNldDo6c2V0Rm9yKCpleGVj
dXRhYmxlLT5zdWJzcGFjZSgpLCBIZWFwOjpleGVjdXRhYmxlT3V0cHV0Q29uc3RyYWludHNTZXQp
LmFkZChleGVjdXRhYmxlKTsKKyAgICB9Cit9CisKK0RFRklORV9WSVNJVF9DSElMRFJFTihHbG9i
YWxFeGVjdXRhYmxlKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgR2xvYmFs
RXhlY3V0YWJsZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50c0ltcGwoSlNDZWxsKiBjZWxsLCBWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8R2xvYmFsRXhl
Y3V0YWJsZSo+KGNlbGwpOworICAgIGJvb2wgc2hvdWxkS2VlcEluQ29uc3RyYWludFNldCA9IGZh
bHNlOworICAgIGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9j
aygpKSB7CisgICAgICAgIGlmICghdmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2spKQorICAgICAg
ICAgICAgc2hvdWxkS2VlcEluQ29uc3RyYWludFNldCA9IHJ1bkNvbnN0cmFpbnQoTm9Mb2NraW5n
TmVjZXNzYXJ5LCB2aXNpdG9yLCBjb2RlQmxvY2spOworICAgIH0KKyAgICBpZiAoIXNob3VsZEtl
ZXBJbkNvbnN0cmFpbnRTZXQpCisgICAgICAgIEhlYXA6OkV4ZWN1dGFibGVTcGFjZUFuZFNldDo6
c2V0Rm9yKCpleGVjdXRhYmxlLT5zdWJzcGFjZSgpLCBIZWFwOjpleGVjdXRhYmxlT3V0cHV0Q29u
c3RyYWludHNTZXQpLnJlbW92ZShleGVjdXRhYmxlKTsKK30KKworREVGSU5FX1ZJU0lUX09VVFBV
VF9DT05TVFJBSU5UUyhHbG9iYWxFeGVjdXRhYmxlKTsKKworQ29kZUJsb2NrKiBHbG9iYWxFeGVj
dXRhYmxlOjpyZXBsYWNlQ29kZUJsb2NrV2l0aChWTSYgdm0sIENvZGVCbG9jayogbmV3Q29kZUJs
b2NrKQoreworICAgIENvZGVCbG9jayogb2xkQ29kZUJsb2NrID0gY29kZUJsb2NrKCk7CisgICAg
bV9jb2RlQmxvY2suc2V0KHZtLCB0aGlzLCBuZXdDb2RlQmxvY2spOworICAgIHJldHVybiBvbGRD
b2RlQmxvY2s7Cit9CisKK3ZvaWQgR2xvYmFsRXhlY3V0YWJsZTo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkoVk0mIHZtKQoreworICAgIGZpbmFsaXplQ29kZUJsb2NrRWRnZSh2bSwgbV9jb2RlQmxv
Y2spOworICAgIEhlYXA6OkV4ZWN1dGFibGVTcGFjZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgp
LCBIZWFwOjpleGVjdXRhYmxlT3V0cHV0Q29uc3RyYWludHNTZXQpLnJlbW92ZSh0aGlzKTsKKyAg
ICBIZWFwOjpFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSwgSGVhcDo6
ZXhlY3V0YWJsZUZpbmFsaXplclNldCkucmVtb3ZlKHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV4
ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV4ZWN1dGFi
bGUuaAppbmRleCA5Mjc0YzljZDNkNmQyMTJiYThiNjU2YmEzYzgyMDMwNTE1NTYwYjU0Li4zZDFk
ZTllMGFjZjU4NmI1MTJjMWZjZmUzN2ZiZDllMWJmMTRjOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5oCkBAIC0yNSw3ICsyNSw2IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGFibGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00
OCwxMiArNDcsMzIgQEAgY2xhc3MgR2xvYmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGVuZENvbHVtbiAhPSBVSU5UX01BWCk7CiAgICAgfQog
CisgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKKyAgICBERUNMQVJFX1ZJU0lUX09VVFBVVF9D
T05TVFJBSU5UUzsKKworICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKKwog
cHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogICAgIEdsb2Jh
bEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlQ29kZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBl
IGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wg
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBl
LCBJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICA6IEJhc2Uoc3RydWN0dXJlLCB2bSwgc291
cmNlQ29kZSwgaXNJblN0cmljdENvbnRleHQgPyBTdHJpY3RNb2RlTGV4aWNhbEZlYXR1cmUgOiBO
b0xleGljYWxGZWF0dXJlcywgZGVyaXZlZENvbnRleHRUeXBlLCBpc0luQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBlLCBpbnRyaW5z
aWMpCiAgICAgewogICAgIH0KIAorICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2NvZGVCbG9jay5nZXQoKTsKKyAgICB9CisKKyAgICBVbmxp
bmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2soKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fdW5saW5rZWRDb2RlQmxvY2suZ2V0KCk7CisgICAgfQorCisgICAgQ29kZUJsb2Nr
KiByZXBsYWNlQ29kZUJsb2NrV2l0aChWTSYsIENvZGVCbG9jayopOworCisgICAgV3JpdGVCYXJy
aWVyPENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CisgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkQ29k
ZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrOwogICAgIGludCBtX2xhc3RMaW5lIHsgLTEgfTsK
ICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbiB7IFVJTlRfTUFYIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNw
cAppbmRleCA1YmM1ODgyYjAwMmMyODU2NjUzNTI2YzQwNGRkOWNmMTU0NDU2NWM2Li5lOWUxZGUz
NWEwNWIzYjRjMzM4Njc3ZjVjNTY4MzE5MjM4Zjg4OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcApAQCAt
NjUsNyArNjUsNyBAQCBpbmxpbmUgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFs
RXhlY3V0YWJsZTo6Y3JlYXRlSW1wbChKU0dsb2JhbE9iamVjdAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXZhbENvZGVCbG9jay5z
ZXQodm0sIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUpOworICAgIGV4ZWN1dGFibGUtPm1f
dW5saW5rZWRDb2RlQmxvY2suc2V0KHZtLCBleGVjdXRhYmxlLCB1bmxpbmtlZEV2YWxDb2RlKTsK
IAogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBhMzc2YWY1ZWVhMGRlNmI1MTcwYzRmYjQ0NzM3MzBk
MjU4MzMxYzUyLi5jOWI3MTYwNzBiYmZkMGFhMGI0YjdjYzRlZTJhYjg3NWJlOWY1NGU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIKICNpbmNsdWRlICJDb21tb25JZGVudGlm
aWVycy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0
YWJsZUlubGluZXMuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKaW5kZXggYWI3YmVj
ZDljNjdhMDhjMmZlMjU4ZjdkYjkxMDU0ZjJiYWQ3OWQxMS4uMDgxMGUxZDJkMTY1MzBkMGQ4NjI1
NGQwMGMzNDc1ZjZlMWE0NThjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtOTYsNyArOTYsNyBAQCBTeW5jaHJvbm91c25lc3Mg
SlNNb2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBzY3JpcAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFN5bmNocm9ub3VzbmVzczo6
U3luYyk7CiAgICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQodm0sIHRoaXMsIGV4ZWN1
dGFibGUpOwogCi0gICAgcmV0dXJuIGV4ZWN1dGFibGUtPnVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jaygpLT5pc0FzeW5jKCkgPyBTeW5jaHJvbm91c25lc3M6OkFzeW5jIDogU3luY2hyb25v
dXNuZXNzOjpTeW5jOworICAgIHJldHVybiBleGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9jaygp
LT5pc0FzeW5jKCkgPyBTeW5jaHJvbm91c25lc3M6OkFzeW5jIDogU3luY2hyb25vdXNuZXNzOjpT
eW5jOwogfQogCiB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKQEAgLTIwOSw3ICsy
MDksNyBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNb2R1bAogICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE2
LjQgc3RlcCAxNi1hLWl2LgogICAgIC8vIEluaXRpYWxpemUgaGVhcCBhbGxvY2F0ZWQgZnVuY3Rp
b24gZGVjbGFyYXRpb25zLgogICAgIC8vIFRoZXkgY2FuIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGJv
ZHkgb2YgdGhlIG1vZHVsZSBpcyBleGVjdXRlZCB1bmRlciBjaXJjdWxhciBkZXBlbmRlbmNpZXMu
Ci0gICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9
IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT51bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2so
KTsKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
ID0gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDAsIG51bWJlck9mRnVuY3Rpb25zID0gdW5saW5rZWRDb2RlQmxvY2stPm51
bWJlck9mRnVuY3Rpb25EZWNscygpOyBpIDwgbnVtYmVyT2ZGdW5jdGlvbnM7ICsraSkgewogICAg
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwogICAgICAgICBTeW1ib2xU
YWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUtPmdldCh1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS0+bmFtZSgpLmltcGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHAKaW5kZXggMjQ3ZmFhNjVlYmNl
NmVhMzk0NzZjYzI2ZWY0ZDJlNTI2ZDU5ZTU2OC4uODEyYzFjNzVhNTUyZDViNmM5MmVjZDYzZTQ0
OTUxNTFkNjRiYTc3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNwcApAQCAtNjIsNyArNjIsNyBAQCBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsTwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5zZXQoZ2xvYmFs
T2JqZWN0LT52bSgpLCBleGVjdXRhYmxlLCB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlKTsKKyAg
ICBleGVjdXRhYmxlLT5tX3VubGlua2VkQ29kZUJsb2NrLnNldChnbG9iYWxPYmplY3QtPnZtKCks
IGV4ZWN1dGFibGUsIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGUpOwogCiAgICAgZXhlY3V0YWJs
ZS0+bV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLnNldChnbG9iYWxPYmplY3QtPnZtKCks
IGV4ZWN1dGFibGUsIGpzQ2FzdDxTeW1ib2xUYWJsZSo+KHVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGUtPmNvbnN0YW50UmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKHVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGUtPm1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0
KCkpKS5nZXQoKSktPmNsb25lU2NvcGVQYXJ0KGdsb2JhbE9iamVjdC0+dm0oKSkpOwogCkBAIC04
NSw5ICs4NSw3IEBAIHZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5J
bXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGNl
bGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
ICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50U3ltYm9s
VGFibGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayk7CiAgICAgaWYgKFRlbXBsYXRlT2JqZWN0TWFwKiBtYXAgPSB0aGlzT2JqZWN0LT5t
X3RlbXBsYXRlT2JqZWN0TWFwLmdldCgpKSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyB0aGlz
T2JqZWN0LT5jZWxsTG9jaygpIH07CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiAqbWFwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1F
eGVjdXRhYmxlLmgKaW5kZXggOTI2MzViMzIyMWIyYzU0MTRhY2E3NmQxOGI5OGU4YjFhYzhkZWEx
NS4uMzljMmFhOTRiMmNlNDk3MGI3NWNlODBhYmM5NTI5YzYyODkzOWY4OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZS5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZS5oIgogI2luY2x1ZGUgIkdsb2JhbEV4ZWN1dGFibGUuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC00Niw5ICs0NSwxNCBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBHbG9iYWxFeGVjdXRhYmxlIHsKIAogICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKLSAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2Rl
QmxvY2soKQorICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
PihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9tb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmdldCgpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8TW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayo+KEJhc2U6OmNvZGVCbG9jaygpKTsKKyAgICB9CisKKyAgICBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4o
QmFzZTo6dW5saW5rZWRDb2RlQmxvY2soKSk7CiAgICAgfQogCiAgICAgUmVmPEpJVENvZGU+IGdl
bmVyYXRlZEpJVENvZGUoKQpAQCAtNjMsNyArNjcsNiBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBHbG9iYWxFeGVjdXRhYmxlIHsKIAogICAgIERFQ0xBUkVf
SU5GTzsKIAotICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2suZ2V0KCk7IH0KICAgICBib29sIGlzQXN5bmMoKSBjb25zdCB7IHJldHVybiBmZWF0dXJl
cygpICYgQXdhaXRGZWF0dXJlOyB9CiAKICAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJvbm1l
bnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5n
ZXQoKTsgfQpAQCAtNzgsOSArODEsNyBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSBm
aW5hbCA6IHB1YmxpYyBHbG9iYWxFeGVjdXRhYmxlIHsKIAogICAgIERFQ0xBUkVfVklTSVRfQ0hJ
TERSRU47CiAKLSAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
PiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKICAgICBXcml0ZUJhcnJpZXI8U3lt
Ym9sVGFibGU+IG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZTsKLSAgICBXcml0ZUJhcnJp
ZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0ZU9iamVjdE1hcD4gbV90ZW1wbGF0ZU9iamVjdE1h
cDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dy
YW1FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmNwcAppbmRleCA3MzI5ZmUyNzAxODY4NGFiMDVjNmE0Nzc2ZmFkMjk2ZTU4Mjg5
ZDZjLi5jZTgyNDJmOTgzNWZiNjNjYWJmYTE0NzdkZTlhMjIzZmIwYWY5ODE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCkBA
IC0xNTAsOCArMTUwLDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXpl
R2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgICAgICB9CiAgICAg
fQogCi0KLSAgICBtX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5zZXQodm0sIHRoaXMsIHVubGlu
a2VkQ29kZUJsb2NrKTsKKyAgICBtX3VubGlua2VkQ29kZUJsb2NrLnNldCh2bSwgdGhpcywgdW5s
aW5rZWRDb2RlQmxvY2spOwogCiAgICAgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIgb3B0aW1p
emVyKHZtLCBnbG9iYWxPYmplY3QpOwogCkBAIC0yMTYsOCArMjE1LDYgQEAgdm9pZCBQcm9ncmFt
RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNp
dG9yKQogICAgIFByb2dyYW1FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PFByb2dyYW1F
eGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV91bmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2spOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJvZ3JhbUNvZGVCbG9j
ayk7CiAgICAgaWYgKFRlbXBsYXRlT2JqZWN0TWFwKiBtYXAgPSB0aGlzT2JqZWN0LT5tX3RlbXBs
YXRlT2JqZWN0TWFwLmdldCgpKSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyB0aGlzT2JqZWN0
LT5jZWxsTG9jaygpIH07CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiAqbWFwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXgg
NTEzNDk5MDIwNDA3ODEzYzU5ZTMyODhhMThkZjI5YmMxMTFiZmVjMi4uNDM5NGU3ZmZjYjY4YjIx
NTE3Yzg5Y2NhYjI4YTgzNTY1ZjkyYWNlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oIgogI2luY2x1
ZGUgIkdsb2JhbEV4ZWN1dGFibGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01Niw5ICs1NSwx
NCBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBHbG9iYWxFeGVjdXRh
YmxlIHsKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKLSAgICBQcm9ncmFt
Q29kZUJsb2NrKiBjb2RlQmxvY2soKQorICAgIFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaygp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFByb2dyYW1Db2RlQmxv
Y2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9wcm9ncmFtQ29kZUJsb2Nr
LmdldCgpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UHJvZ3JhbUNvZGVCbG9jayo+
KEJhc2U6OmNvZGVCbG9jaygpKTsKKyAgICB9CisKKyAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2sqIHVubGlua2VkQ29kZUJsb2NrKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKj4oQmFzZTo6dW5saW5rZWRDb2RlQmxv
Y2soKSk7CiAgICAgfQogCiAgICAgUmVmPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQpAQCAt
ODMsOCArODcsNiBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBHbG9i
YWxFeGVjdXRhYmxlIHsKIAogICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CiAKLSAgICBXcml0
ZUJhcnJpZXI8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrPiBtX3VubGlua2VkUHJvZ3JhbUNvZGVC
bG9jazsKLSAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9wcm9n
cmFtQ29kZUJsb2NrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0ZU9iamVjdE1hcD4gbV90
ZW1wbGF0ZU9iamVjdE1hcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKaW5kZXggYzZhOWVhYjY3MTRjZTQyYzQxMDg3YmRi
MDhmYzkyMTc0YWM4ZWNiZi4uOTljY2RlZTQ4YmZkOTUyZmQ2MmZiNTMzYjY1YTgwMmNkNjdlYjQ0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0
YWJsZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1
ZGUgIkV2YWxDb2RlQmxvY2suaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCIKICNpbmNsdWRlICJHbG9iYWxFeGVj
dXRhYmxlLmgiCiAjaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNsdWRlICJKSVQu
aCIKQEAgLTg2LDIwICs4NywyMCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OmNsZWFyQ29kZShJ
c29DZWxsU2V0JiBjbGVhcmFibGVDb2RlU2V0KQogICAgIH0KICAgICBjYXNlIEV2YWxFeGVjdXRh
YmxlVHlwZTogewogICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19j
YXN0PEV2YWxFeGVjdXRhYmxlKj4odGhpcyk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1fZXZhbENv
ZGVCbG9jay5jbGVhcigpOwotICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXZhbENvZGVC
bG9jay5jbGVhcigpOworICAgICAgICBleGVjdXRhYmxlLT5tX2NvZGVCbG9jay5jbGVhcigpOwor
ICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkQ29kZUJsb2NrLmNsZWFyKCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFByb2dyYW1FeGVjdXRhYmxlVHlwZTogewogICAgICAg
ICBQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PFByb2dyYW1FeGVj
dXRhYmxlKj4odGhpcyk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNvZGVCbG9jay5j
bGVhcigpOwotICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5j
bGVhcigpOworICAgICAgICBleGVjdXRhYmxlLT5tX2NvZGVCbG9jay5jbGVhcigpOworICAgICAg
ICBleGVjdXRhYmxlLT5tX3VubGlua2VkQ29kZUJsb2NrLmNsZWFyKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZTogewogICAgICAg
ICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1fbW9kdWxl
UHJvZ3JhbUNvZGVCbG9jay5jbGVhcigpOwotICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5jbGVhcigpOworICAgICAgICBleGVjdXRhYmxlLT5tX2Nv
ZGVCbG9jay5jbGVhcigpOworICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkQ29kZUJsb2Nr
LmNsZWFyKCk7CiAgICAgICAgIGV4ZWN1dGFibGUtPm1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xU
YWJsZS5jbGVhcigpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMDgsNyArMTA5LDcgQEAg
dm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpjbGVhckNvZGUoSXNvQ2VsbFNldCYgY2xlYXJhYmxlQ29k
ZVNldCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgQVNTRVJUKCZIZWFwOjpTcGFjZUFu
ZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgpKSA9PSAmY2xlYXJhYmxlQ29kZVNldCk7CisgICAgQVNT
RVJUKCZIZWFwOjpFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSwgSGVh
cDo6ZXhlY3V0YWJsZUNsZWFyYWJsZUNvZGVTZXQpID09ICZjbGVhcmFibGVDb2RlU2V0KTsKICAg
ICBjbGVhcmFibGVDb2RlU2V0LnJlbW92ZSh0aGlzKTsKIH0KIApAQCAtMTMxLDggKzEzMiw3IEBA
IHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUoVk0mIHZtLCBDb2RlQmxvY2sqIGdl
bmVyaWNDb2RlQmxvY2ssIENvZGVUeXBlCiAgICAgICAgIAogICAgICAgICBBU1NFUlQoa2luZCA9
PSBDb2RlRm9yQ2FsbCk7CiAgICAgICAgIAotICAgICAgICBvbGRDb2RlQmxvY2sgPSBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFjdGl2YXRlQW5kVW53cmFwKGV4ZWN1dGFibGUtPm1fcHJv
Z3JhbUNvZGVCbG9jay5nZXQoKSk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNvZGVC
bG9jay5zZXRNYXlCZU51bGwodm0sIHRoaXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6Ondy
YXBBbmRBY3RpdmF0ZShjb2RlQmxvY2spKTsKKyAgICAgICAgb2xkQ29kZUJsb2NrID0gZXhlY3V0
YWJsZS0+cmVwbGFjZUNvZGVCbG9ja1dpdGgodm0sIGNvZGVCbG9jayk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIApAQCAtMTQyLDggKzE0Miw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5z
dGFsbENvZGUoVk0mIHZtLCBDb2RlQmxvY2sqIGdlbmVyaWNDb2RlQmxvY2ssIENvZGVUeXBlCiAK
ICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOwogCi0gICAgICAgIG9sZENvZGVC
bG9jayA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGVBbmRVbndyYXAoZXhl
Y3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpKTsKLSAgICAgICAgZXhlY3V0
YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLnNldE1heUJlTnVsbCh2bSwgdGhpcywgRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6d3JhcEFuZEFjdGl2YXRlKGNvZGVCbG9jaykpOworICAg
ICAgICBvbGRDb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5yZXBsYWNlQ29kZUJsb2NrV2l0aCh2bSwg
Y29kZUJsb2NrKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xNTMsOCArMTUyLDcgQEAg
dm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShWTSYgdm0sIENvZGVCbG9jayogZ2Vu
ZXJpY0NvZGVCbG9jaywgQ29kZVR5cGUKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChraW5kID09
IENvZGVGb3JDYWxsKTsKICAgICAgICAgCi0gICAgICAgIG9sZENvZGVCbG9jayA9IEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGVBbmRVbndyYXAoZXhlY3V0YWJsZS0+bV9ldmFs
Q29kZUJsb2NrLmdldCgpKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV9ldmFsQ29kZUJsb2NrLnNl
dE1heUJlTnVsbCh2bSwgdGhpcywgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6d3JhcEFuZEFj
dGl2YXRlKGNvZGVCbG9jaykpOworICAgICAgICBvbGRDb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5y
ZXBsYWNlQ29kZUJsb2NrV2l0aCh2bSwgY29kZUJsb2NrKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgICAgICAKQEAgLTE2MiwxNiArMTYwLDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpp
bnN0YWxsQ29kZShWTSYgdm0sIENvZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9jaywgQ29kZVR5cGUK
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KHRoaXMpOwogICAgICAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2Nr
ID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihnZW5lcmljQ29kZUJsb2NrKTsKICAg
ICAgICAgCi0gICAgICAgIHN3aXRjaCAoa2luZCkgewotICAgICAgICBjYXNlIENvZGVGb3JDYWxs
OgotICAgICAgICAgICAgb2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6
ZGVhY3RpdmF0ZUFuZFVud3JhcChleGVjdXRhYmxlLT5tX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCkp
OwotICAgICAgICAgICAgZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2tGb3JDYWxsLnNldE1heUJlTnVs
bCh2bSwgdGhpcywgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6d3JhcEFuZEFjdGl2YXRlKGNv
ZGVCbG9jaykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29kZUZvckNvbnN0
cnVjdDoKLSAgICAgICAgICAgIG9sZENvZGVCbG9jayA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2U6OmRlYWN0aXZhdGVBbmRVbndyYXAoZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2tGb3JDb25zdHJ1
Y3QuZ2V0KCkpOwotICAgICAgICAgICAgZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2tGb3JDb25zdHJ1
Y3Quc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFw
QW5kQWN0aXZhdGUoY29kZUJsb2NrKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQor
ICAgICAgICBvbGRDb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5yZXBsYWNlQ29kZUJsb2NrV2l0aCh2
bSwga2luZCwgY29kZUJsb2NrKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KQEAgLTE4
Nyw3ICsxNzYsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2bSwg
Q29kZUJsb2NrKiBnZW5lcmljQ29kZUJsb2NrLCBDb2RlVHlwZQogICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICBhdXRvJiBjbGVhcmFibGVDb2RlU2V0ID0gSGVhcDo6U3BhY2VBbmRTZXQ6OnNl
dEZvcigqc3Vic3BhY2UoKSk7CisgICAgYXV0byYgY2xlYXJhYmxlQ29kZVNldCA9IEhlYXA6OkV4
ZWN1dGFibGVTcGFjZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgpLCBIZWFwOjpleGVjdXRhYmxl
Q2xlYXJhYmxlQ29kZVNldCk7CiAgICAgaWYgKGhhc0NsZWFyYWJsZUNvZGUodm0pKQogICAgICAg
ICBjbGVhcmFibGVDb2RlU2V0LmFkZCh0aGlzKTsKICAgICBlbHNlCkBAIC0yMjUsMjMgKzIxNCwy
MyBAQCBib29sIFNjcmlwdEV4ZWN1dGFibGU6Omhhc0NsZWFyYWJsZUNvZGUoVk0mIHZtKSBjb25z
dAogCiAgICAgaWYgKHN0cnVjdHVyZSh2bSktPmNsYXNzSW5mbygpID09IEZ1bmN0aW9uRXhlY3V0
YWJsZTo6aW5mbygpKSB7CiAgICAgICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxj
b25zdCBGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzKTsKLSAgICAgICAgaWYgKGV4ZWN1dGFibGUt
Pm1fY29kZUJsb2NrRm9yQ2FsbCB8fCBleGVjdXRhYmxlLT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVj
dCkKKyAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmVpdGhlckNvZGVCbG9jaygpKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICB9IGVsc2UgaWYgKHN0cnVjdHVyZSh2bSktPmNsYXNzSW5m
bygpID09IEV2YWxFeGVjdXRhYmxlOjppbmZvKCkpIHsKICAgICAgICAgYXV0byogZXhlY3V0YWJs
ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEV2YWxFeGVjdXRhYmxlKj4odGhpcyk7Ci0gICAgICAgIGlm
IChleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2sgfHwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2
YWxDb2RlQmxvY2spCisgICAgICAgIGlmIChleGVjdXRhYmxlLT5tX2NvZGVCbG9jayB8fCBleGVj
dXRhYmxlLT5tX3VubGlua2VkQ29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICB9IGVsc2UgaWYgKHN0cnVjdHVyZSh2bSktPmNsYXNzSW5mbygpID09IFByb2dyYW1FeGVj
dXRhYmxlOjppbmZvKCkpIHsKICAgICAgICAgYXV0byogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0
PGNvbnN0IFByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7Ci0gICAgICAgIGlmIChleGVjdXRhYmxl
LT5tX3Byb2dyYW1Db2RlQmxvY2sgfHwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2spCisgICAgICAgIGlmIChleGVjdXRhYmxlLT5tX2NvZGVCbG9jayB8fCBleGVjdXRhYmxl
LT5tX3VubGlua2VkQ29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICB9
IGVsc2UgaWYgKHN0cnVjdHVyZSh2bSktPmNsYXNzSW5mbygpID09IE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlOjppbmZvKCkpIHsKICAgICAgICAgYXV0byogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0
PGNvbnN0IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7Ci0gICAgICAgIGlmIChleGVj
dXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2sKLSAgICAgICAgICAgIHx8IGV4ZWN1dGFi
bGUtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrCisgICAgICAgIGlmIChleGVjdXRh
YmxlLT5tX2NvZGVCbG9jaworICAgICAgICAgICAgfHwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENv
ZGVCbG9jawogICAgICAgICAgICAgfHwgZXhlY3V0YWJsZS0+bV9tb2R1bGVFbnZpcm9ubWVudFN5
bWJvbFRhYmxlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjYxLDI1ICsy
NTAsMjUgQEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU0Z1bmMKICAgICBpZiAoY2xhc3NJbmZvKHZtKSA9
PSBFdmFsRXhlY3V0YWJsZTo6aW5mbygpKSB7CiAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0ganNDYXN0PEV2YWxFeGVjdXRhYmxlKj4odGhpcyk7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVCghZXhl
Y3V0YWJsZS0+bV9ldmFsQ29kZUJsb2NrKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWN1
dGFibGUtPm1fY29kZUJsb2NrKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uKTsK
LSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEV2YWxDb2RlQmxvY2s6OmNy
ZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxDb2RlQmxvY2su
Z2V0KCksIHNjb3BlKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBF
dmFsQ29kZUJsb2NrOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnVubGlua2Vk
Q29kZUJsb2NrKCksIHNjb3BlKSk7CiAgICAgfQogCiAgICAgaWYgKGNsYXNzSW5mbyh2bSkgPT0g
UHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgewogICAgICAgICBQcm9ncmFtRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGpzQ2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOwogICAgICAgICBS
RUxFQVNFX0FTU0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIWV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNvZGVCbG9jayk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFleGVjdXRhYmxlLT5tX2NvZGVCbG9jayk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFm
dW5jdGlvbik7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBQcm9ncmFt
Q29kZUJsb2NrOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrLmdldCgpLCBzY29wZSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBl
eGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9jaygpLCBzY29wZSkpOwogICAgIH0KIAogICAgIGlm
IChjbGFzc0luZm8odm0pID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKICAg
ICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9
PSBDb2RlRm9yQ2FsbCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjdXRhYmxlLT5tX21v
ZHVsZVByb2dyYW1Db2RlQmxvY2spOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghZXhlY3V0YWJs
ZS0+bV9jb2RlQmxvY2spOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCghZnVuY3Rpb24pOwotICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
azo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJs
ZSwgZXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2soKSwgc2NvcGUpKTsKICAgICB9CiAKICAg
ICBSRUxFQVNFX0FTU0VSVChjbGFzc0luZm8odm0pID09IEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5m
bygpKTsKQEAgLTUzNSw0ICs1MjQsNzkgQEAgdW5zaWduZWQgU2NyaXB0RXhlY3V0YWJsZTo6ZW5k
Q29sdW1uKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVmlz
aXRvcj4KK2Jvb2wgU2NyaXB0RXhlY3V0YWJsZTo6cnVuQ29uc3RyYWludChjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImIGxvY2tlciwgVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCit7CisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgY29kZUJsb2NrLT5wcm9wYWdhdGVU
cmFuc2l0aW9ucyhsb2NrZXIsIHZpc2l0b3IpOworICAgIGNvZGVCbG9jay0+ZGV0ZXJtaW5lTGl2
ZW5lc3MobG9ja2VyLCB2aXNpdG9yKTsKKyAgICByZXR1cm4gIXZpc2l0b3IuaXNNYXJrZWQoY29k
ZUJsb2NrKTsKK30KKwordGVtcGxhdGUgYm9vbCBTY3JpcHRFeGVjdXRhYmxlOjpydW5Db25zdHJh
aW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEFic3RyYWN0U2xvdFZpc2l0b3ImLCBDb2Rl
QmxvY2sqKTsKK3RlbXBsYXRlIGJvb2wgU2NyaXB0RXhlY3V0YWJsZTo6cnVuQ29uc3RyYWludChj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTbG90VmlzaXRvciYsIENvZGVCbG9jayopOworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgorYm9vbCBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENv
ZGVCbG9ja0VkZ2UoVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7Cisg
ICAgQVNTRVJUKGNvZGVCbG9jayk7CisKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNv
ZGVCbG9jay0+bV9sb2NrKTsKKworICAgIGlmIChjb2RlQmxvY2stPnNob3VsZFZpc2l0U3Ryb25n
bHkobG9ja2VyLCB2aXNpdG9yKSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChj
b2RlQmxvY2spOworCisgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2st
PmppdFR5cGUoKSkpIHsKKyAgICAgICAgLy8gSWYgd2UgamV0dGlzb24gb3Vyc2VsdmVzIHdlJ2xs
IGluc3RhbGwgb3VyIGFsdGVybmF0aXZlLCBzbyBtYWtlIHN1cmUgdGhhdCBpdAorICAgICAgICAv
LyBzdXJ2aXZlcyBHQyBldmVuIGlmIHdlIGRvbid0LgorICAgICAgICB2aXNpdG9yLmFwcGVuZChj
b2RlQmxvY2stPm1fYWx0ZXJuYXRpdmUpOworICAgIH0KKworICAgIC8vIE5PVEU6IFRoZXJlIGFy
ZSB0d28gc2lkZXMgdG8gdGhpcyBjb25zdHJhaW50LCB3aXRoIGRpZmZlcmVudCByZXF1aXJlbWVu
dHMgZm9yIGNvcnJlY3RuZXNzLgorICAgIC8vIEJlY2F1c2UgZXZlcnl0aGluZyBpcyB1bHRpbWF0
ZWx5IHByb3RlY3RlZCB3aXRoIHdlYWsgcmVmZXJlbmNlcyBhbmQgamV0dGlzb25pbmcsIGl0J3MK
KyAgICAvLyBhbHdheXMgIk9LIiB0byBjbGFpbSB0aGF0IHNvbWV0aGluZyBpcyBkZWFkIHByZW1h
dHVyZWx5IGFuZCBpdCdzICJPSyIgdG8ga2VlcCB0aGluZ3MgYWxpdmUuCisgICAgLy8gQnV0IGJv
dGggY2hvaWNlcyBjb3VsZCBsZWFkIHRvIGJhZCBwZXJmIC0gZWl0aGVyIHJlY29tcCBjeWNsZXMg
b3IgbGVha3MuCisgICAgLy8KKyAgICAvLyBEZXRlcm1pbmluZyBDb2RlQmxvY2sgbGl2ZW5lc3M6
IFRoaXMgcGFydCBpcyB0aGUgbW9zdCBjb25zZXF1ZW50aWFsLiBXZSB3YW50IHRvIGtlZXAgdGhl
CisgICAgLy8gb3V0cHV0IGNvbnN0cmFpbnQgYWN0aXZlIHNvIGxvbmcgYXMgd2UgdGhpbmsgdGhh
dCB3ZSBtYXkgeWV0IHByb3ZlIHRoYXQgdGhlIENvZGVCbG9jayBpcworICAgIC8vIGxpdmUgYnV0
IHdlIGhhdmVuJ3QgZG9uZSBpdCB5ZXQuCisgICAgLy8KKyAgICAvLyBNYXJraW5nIFN0cnVjdHVy
ZXMgaWYgcHJvZml0YWJsZTogSXQncyBpbXBvcnRhbnQgdGhhdCB3ZSBkbyBhIHBhc3Mgb2YgdGhp
cy4gTG9naWNhbGx5LCB0aGlzCisgICAgLy8gc2VlbXMgbGlrZSBpdCBpcyBhIGNvbnN0cmFpbnQg
b2YgQ29kZUJsb2NrLiBCdXQgd2UgaGF2ZSBhbHdheXMgZmlyc3QgcnVuIHRoaXMgYXMgYSByZXN1
bHQKKyAgICAvLyBvZiB0aGUgZWRnZSBiZWluZyBtYXJrZWQgZXZlbiBiZWZvcmUgd2UgZGV0ZXJt
aW5lIHRoZSBsaXZlbmVzcyBvZiB0aGUgQ29kZUJsb2NrLiBUaGlzCisgICAgLy8gYWxsb3dzIGEg
Q29kZUJsb2NrIHRvIG1hcmsgaXRzZWxmIGJ5IGZpcnN0IHByb3ZpbmcgdGhhdCBhbGwgb2YgdGhl
IFN0cnVjdHVyZXMgaXQgd2Vha2x5CisgICAgLy8gZGVwZW5kcyBvbiBjb3VsZCBiZSBzdHJvbmds
eSBtYXJrZWQuIChUaGlzIHBhcnQgaXMgYWxzbyBjYWxsZWQgcHJvcGFnYXRlVHJhbnNpdGlvbnMu
KQorICAgIC8vCisgICAgLy8gQXMgYSB3ZWlyZCBjYXZlYXQsIHdlIG9ubHkgZml4cG9pbnQgdGhl
IGNvbnN0cmFpbnRzIHNvIGxvbmcgYXMgdGhlIENvZGVCbG9jayBpcyBub3QgbGl2ZS4KKyAgICAv
LyBUaGlzIG1lYW5zIHRoYXQgd2UgbWF5IG92ZXJsb29rIHN0cnVjdHVyZSBtYXJraW5nIG9wcG9y
dHVuaXRpZXMgY3JlYXRlZCBieSBvdGhlciBtYXJraW5nCisgICAgLy8gdGhhdCBoYXBwZW5zIGFm
dGVyIHRoZSBDb2RlQmxvY2sgaXMgbWFya2VkLiBUaGlzIHdhcyBhbiBhY2NpZGVudGFsIHBvbGlj
eSBkZWNpc2lvbiBmcm9tIGEKKyAgICAvLyBsb25nIHRpbWUgYWdvLCBidXQgaXQgaXMgcHJvYmFi
bHkgT0ssIHNpbmNlIGl0J3Mgb25seSB3b3J0aHdoaWxlIHRvIGtlZXAgZml4cG9pbnRpbmcgdGhl
CisgICAgLy8gc3RydWN0dXJlIG1hcmtpbmcgaWYgd2Ugc3RpbGwgaGF2ZSB1bm1hcmtlZCBzdHJ1
Y3R1cmVzIGFmdGVyIHRoZSBmaXJzdCByb3VuZC4gV2UgYWxtb3N0CisgICAgLy8gbmV2ZXIgd2ls
bCBiZWNhdXNlIHdlIHdpbGwgbWFyay1pZi1wcm9maXRhYmxlIGJhc2VkIG9uIHRoZSBvd25pbmcg
Z2xvYmFsIG9iamVjdCBiZWluZworICAgIC8vIGFscmVhZHkgbWFya2VkLiBXZSBtYXJrIGl0IGp1
c3QgaW4gY2FzZSB0aGF0IGhhZG4ndCBoYXBwZW5lZCB5ZXQuIEFuZCBpZiB0aGUgQ29kZUJsb2Nr
IGlzCisgICAgLy8gbm90IHlldCBtYXJrZWQgYmVjYXVzZSBpdCB3ZWFrbHkgZGVwZW5kcyBvbiBh
IHN0cnVjdHVyZSB0aGF0IHdlIGRpZCBub3QgeWV0IG1hcmssIHRoZW4gd2UKKyAgICAvLyB3aWxs
IGtlZXAgZml4cG9pbnRpbmcgdW50aWwgdGhlIGVuZC4KKyAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkKGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOworICAgIHJldHVybiBydW5Db25zdHJh
aW50KGxvY2tlciwgdmlzaXRvciwgY29kZUJsb2NrKTsKK30KKwordGVtcGxhdGUgYm9vbCBTY3Jp
cHRFeGVjdXRhYmxlOjp2aXNpdENvZGVCbG9ja0VkZ2UoQWJzdHJhY3RTbG90VmlzaXRvciYsIENv
ZGVCbG9jayopOwordGVtcGxhdGUgYm9vbCBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENvZGVCbG9j
a0VkZ2UoU2xvdFZpc2l0b3ImLCBDb2RlQmxvY2sqKTsKKwordm9pZCBTY3JpcHRFeGVjdXRhYmxl
OjpmaW5hbGl6ZUNvZGVCbG9ja0VkZ2UoVk0mIHZtLCBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiYg
Y29kZUJsb2NrRWRnZSkKK3sKKyAgICBhdXRvKiBjb2RlQmxvY2sgPSBjb2RlQmxvY2tFZGdlLmdl
dCgpOworICAgIGlmICghY29kZUJsb2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXZt
LmhlYXAuaXNNYXJrZWQoY29kZUJsb2NrKSkgeworICAgICAgICBpZiAoY29kZUJsb2NrLT5zaG91
bGRKZXR0aXNvbkR1ZVRvV2Vha1JlZmVyZW5jZSh2bSkpCisgICAgICAgICAgICBjb2RlQmxvY2st
PmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvV2Vha1JlZmVyZW5jZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNvZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29u
RHVlVG9PbGRBZ2UpOworICAgICAgICBpZiAoY29kZUJsb2NrID09IGNvZGVCbG9ja0VkZ2UuZ2V0
KCkpCisgICAgICAgICAgICBjb2RlQmxvY2tFZGdlLmNsZWFyKCk7CisgICAgfQorfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NjcmlwdEV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuaAppbmRleCA3NWRhZWU0YjhmMjhiNWJjMTBlMGU2MWMyMzY5MGU2NDkyMDc1
MTgzLi5jMWJhMzM3NTFjYzQ0ZjU2MmU4MmIzMmRlNmIyYjM5NjQyMTVmMDI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCkBAIC0xMzks
NiArMTM5LDEyIEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJh
c2UgewogCiAgICAgc3RhdGljIFRlbXBsYXRlT2JqZWN0TWFwJiBlbnN1cmVUZW1wbGF0ZU9iamVj
dE1hcEltcGwoc3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRlT2JqZWN0TWFwPiYgZGVzdCk7CiAKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgorICAgIHN0YXRpYyBib29sIHJ1bkNvbnN0cmFp
bnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVmlzaXRvciYsIENvZGVCbG9jayopOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CisgICAgc3RhdGljIGJvb2wgdmlzaXRDb2RlQmxv
Y2tFZGdlKFZpc2l0b3ImLCBDb2RlQmxvY2sqKTsKKyAgICB2b2lkIGZpbmFsaXplQ29kZUJsb2Nr
RWRnZShWTSYsIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+Jik7CisKICAgICBTb3VyY2VDb2RlIG1f
c291cmNlOwogICAgIEludHJpbnNpYyBtX2ludHJpbnNpYyB7IE5vSW50cmluc2ljIH07CiAgICAg
Ym9vbCBtX2RpZFRyeVRvRW50ZXJJbkxvb3AgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCmluZGV4IGUzMmRjYjBhZDM0YjIzYmNkYTI0NzFhMDNlZTkyY2I1MjMzMzgy
MzguLjNiYjQ1OGVlOGUzNmQ2YjRlMjY1ZmRiOWMxOTNhMmVkZDIyZGUwODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJFcnJv
ckluc3RhbmNlLmgiCiAjaW5jbHVkZSAiRXZhbENvZGVCbG9jay5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbi5oIgotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRl
ICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIgogI2luY2x1
ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCkBAIC0yOTgsNyArMjk3LDYgQEAgVk06OlZNKFZNVHlw
ZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wq
IHN1Y2Nlc3MpCiAgICAgaGFzaE1hcEJ1Y2tldFNldFN0cnVjdHVyZS5zZXQoKnRoaXMsIEhhc2hN
YXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51
bGxwdHIsIGpzTnVsbCgpKSk7CiAgICAgaGFzaE1hcEJ1Y2tldE1hcFN0cnVjdHVyZS5zZXQoKnRo
aXMsIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT46OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKICAgICBiaWdJbnRTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwo
KSkpOwotICAgIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIs
IGpzTnVsbCgpKSk7CiAKICAgICAvLyBFYWdlcmx5IGluaXRpYWxpemUgY29uc3RhbnQgY2VsbHMg
c2luY2UgdGhlIGNvbmN1cnJlbnQgY29tcGlsZXIgY2FuIGFjY2VzcyB0aGVtLgogICAgIGlmIChP
cHRpb25zOjp1c2VKSVQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMWU5
ZTBiNDhjMzIyMDYyZmVlODk2NTM1ZjUxMTVhNTYzY2E0NTM5NS4uNjY1NjhmMjlmZTBiZmUzZjAz
ZTgwOGZjMTI0ZmJkODUyY2JjNWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBA
IC0zNzMsOSArMzczLDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKIAogICAgIEZPUl9FQUNIX0pT
Q19EWU5BTUlDX0lTT19TVUJTUEFDRShERUZJTkVfRFlOQU1JQ19JU09fU1VCU1BBQ0VfQUNDRVNT
T1JfSU1QTCkKIAotICAgIEFMV0FZU19JTkxJTkUgSXNvQ2VsbFNldCYgZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzOyB9Ci0gICAgQUxXQVlTX0lOTElORSBJc29DZWxs
U2V0JiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkgeyByZXR1cm4g
aGVhcC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOyB9Ci0KICAgICBB
TFdBWVNfSU5MSU5FIEdDQ2xpZW50OjpJc29TdWJzcGFjZSYgY29kZUJsb2NrU3BhY2UoKSB7IHJl
dHVybiBjbGllbnRIZWFwLmNvZGVCbG9ja1NwYWNlOyB9CiAKICAgICBERUZJTkVfRFlOQU1JQ19J
U09fU1VCU1BBQ0VfQUNDRVNTT1IoZXZhbEV4ZWN1dGFibGVTcGFjZSkKQEAgLTQ0MSw3ICs0Mzgs
NiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBE
b3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGhhc2hNYXBC
dWNrZXRTZXRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaGFzaE1hcEJ1Y2tldE1h
cFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBiaWdJbnRTdHJ1Y3R1cmU7Ci0gICAg
U3Ryb25nPFN0cnVjdHVyZT4gZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVN0cnVjdHVyZTsKIAog
ICAgIFN0cm9uZzxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I+IG1fZW1wdHlQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456191</attachid>
            <date>2022-03-30 18:23:24 -0700</date>
            <delta_ts>2022-03-30 19:28:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238485-20220330182324.patch</filename>
            <type>text/plain</type>
            <size>81603</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDE3MTc2YmU2MThhZGY2NWU5ZTE1MGIxYjhkNTdjYzEyZmU3MzFkLi42YTk0Yzc3YWY5ZmM4ODQw
ZTQ0MWQ5NWZjZmFmMjFjMTA0OWEyYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NyBAQAorMjAyMi0wMy0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg0ODUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ry
b25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb25D
b21tb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6Om93bmVyRWRnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
Ynl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAo
SlNDOjpIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2Nrcyk6CisgICAgICAgIChKU0M6OkhlYXA6OmFkZENv
cmVDb25zdHJhaW50cyk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6Okhl
YXA6OlNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5k
U2V0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0Ojpz
ZXRBbmRTcGFjZUZvcik6CisgICAgICAgIChKU0M6OkhlYXA6OlNjcmlwdEV4ZWN1dGFibGVTcGFj
ZUFuZFNldDo6Y2xlYXJhYmxlQ29kZVNldEZvcik6CisgICAgICAgIChKU0M6OkhlYXA6OlNjcmlw
dEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6b3V0cHV0Q29uc3RyYWludHNTZXRGb3IpOgorICAgICAg
ICAoSlNDOjpIZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6OmZpbmFsaXplclNldEZv
cik6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50
aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4
ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHA6
CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAg
ICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0
YWJsZTo6Y29kZUJsb2NrIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnVu
bGlua2VkQ29kZUJsb2NrIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om51
bVZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpudW1GdW5jdGlvbkhv
aXN0aW5nQ2FuZGlkYXRlcyk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpudW1Ub3BM
ZXZlbEZ1bmN0aW9uRGVjbHMpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6YWxsb3dE
aXJlY3RFdmFsQ2FjaGUgY29uc3QpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29k
ZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5j
cHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6YmFzZWxpbmVDb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBs
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdE91dHB1dENvbnN0cmFp
bnRzSW1wbCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6cmVwbGFjZUNvZGVCbG9ja1dpdGgpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0ds
b2JhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpHbG9iYWxFeGVjdXRhYmxlOjp2aXNp
dENoaWxkcmVuSW1wbCk6CisgICAgICAgIChKU0M6Okdsb2JhbEV4ZWN1dGFibGU6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHNJbXBsKToKKyAgICAgICAgKEpTQzo6R2xvYmFsRXhlY3V0YWJsZTo6cmVw
bGFjZUNvZGVCbG9ja1dpdGgpOgorICAgICAgICAoSlNDOjpHbG9iYWxFeGVjdXRhYmxlOjpmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgICogcnVudGltZS9HbG9iYWxFeGVjdXRhYmxl
Lmg6CisgICAgICAgIChKU0M6Okdsb2JhbEV4ZWN1dGFibGU6OmNvZGVCbG9jayBjb25zdCk6Cisg
ICAgICAgIChKU0M6Okdsb2JhbEV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrIGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3Bw
OgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAgICogcnVudGlt
ZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0
aWVzKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBs
KToKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJs
ZTo6Y2xlYXJDb2RlKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENv
ZGUpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpoYXNDbGVhcmFibGVDb2RlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6cnVuQ29uc3RyYWludCk6CisgICAgICAg
IChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q29kZUJsb2NrRWRnZSk6CisgICAgICAgIChK
U0M6OlNjcmlwdEV4ZWN1dGFibGU6OmZpbmFsaXplQ29kZUJsb2NrRWRnZSk6CisgICAgICAgICog
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6Cisg
ICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAo
SlNDOjpWTTo6ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpWTTo6ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmlu
YWxpemVycyk6IERlbGV0ZWQuCisKIDIwMjItMDMtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBPcHRpbWl6ZSB0aGUgY29uc3RydWN0aW9uIG9mIGEgSlNDOjpJ
ZGVudGlmaWVyIGZyb20gYW4gQVNDSUlMaXRlcmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggMDE4YWZlZDcxNjI5Y2UwNzE2MzZkOWZmYTRjZGU3YWJmY2E5NGFmZC4uYzM2
NTkzNzY2ZGQ2MmM5OTQxZDM5MDQzNGU1YTcyZGJlYzA2NzVlOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtNjI3LDcgKzYyNyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCiAgICAg
Ynl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5oCiAgICAgYnl0ZWNvZGUvRXhlY3V0YWJsZUlu
Zm8uaAotICAgIGJ5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAogICAgIGJ5dGVj
b2RlL0V4ZWN1dGlvbkNvdW50ZXIuaAogICAgIGJ5dGVjb2RlL0V4aXRLaW5kLmgKICAgICBieXRl
Y29kZS9FeGl0aW5nSW5saW5lS2luZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGEyOTYxOTdjYWY5YTE2ZDFjMzk1MTI4OTA0NmI0Njc5MTk2ZjBjZTguLjBhMzBmNjEwNmU4NDA1
OGMzNTQ3Yjk4NzM3YzhmMmJmZTExZjllMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0zNzAsNyArMzcwLDYgQEAKIAkJMEY1RTBGRDgyMDdDNzI3MzAwOTdGMERFIC8qIERGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUUwRkQ2MjA3QzcyNzEwMDk3RjBERSAvKiBERkdBYnN0
cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmggKi87IH07CiAJCTBGNUUwRkU3MjA4NkFENDgw
MDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vic3Bh
Y2VQZXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGNUVGOTFGMTY4NzhGN0QwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUVGOTFDMTY4NzhGNzgwMDNFNUMy
NSAvKiBKSVRUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQkwRjYwRkU5MDFGRkMzNzAyMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY2MEZFOEUxRkZDMzZGRDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYxODMy
QTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYxODMyMTFDNDVCRjA3MDA3MjQ1
MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi87IH07CiAJCTBGNjE4MzJEMUM0NUJGMDcw
MDcyNDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMjQxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVtaXRTaHVm
ZmxlLmggKi87IH07CiAJCTBGNjE4MzJGMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJMb3dlckFmdGVy
UmVnQWxsb2MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNjE4MzI2MUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJMb3dlckFmdGVyUmVnQWxsb2MuaCAqLzsg
fTsKQEAgLTI4OTcsOCArMjg5Niw2IEBACiAJCTBGNUUwRkU2MjA4NkFENDcwMDk3RjBERSAvKiBJ
c29TdWJzcGFjZVBlclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IElzb1N1YnNwYWNlUGVyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVF
RjkxQjE2ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNUVGOTFDMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUVGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTBGNjBGRThEMUZGQzM2RkMwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjYw
RkU4RTFGRkMzNkZEMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAv
KiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJDQ2Fs
bGluZ0NvbnZlbnRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYxODMy
MTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckNDYWxsaW5nQ29udmVudGlvbi5oOyBwYXRoID0gYjMv
YWlyL0FpckNDYWxsaW5nQ29udmVudGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjYxODMyMjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckN1c3RvbS5jcHA7IHBhdGggPSBiMy9haXIvQWly
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5NzcsOCArODk3NCw2
IEBACiAJCQkJMTRBRDkxMTIxRENBOTdGRDAwMTRGOUZFIC8qIEV2YWxDb2RlQmxvY2suY3BwICov
LAogCQkJCTE0QUQ5MTA2MURDQTkyOTQwMDE0RjlGRSAvKiBFdmFsQ29kZUJsb2NrLmggKi8sCiAJ
CQkJMTQxNDJFNTIxQjc5NkVERDAwRjRCRjRCIC8qIEV4ZWN1dGFibGVJbmZvLmggKi8sCi0JCQkJ
MEY2MEZFOEQxRkZDMzZGQzAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3Bw
ICovLAotCQkJCTBGNjBGRThFMUZGQzM2RkQwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlLmggKi8sCiAJCQkJMEY1NkExRDQxNTAwMUNGMjAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNv
dW50ZXIuY3BwICovLAogCQkJCTBGNTZBMUQxMTUwMDBGMzEwMDI5OTJCMSAvKiBFeGVjdXRpb25D
b3VudGVyLmggKi8sCiAJCQkJMEY0NEE3QTkyMEJGNjg1RTAwMjJCMTcxIC8qIEV4aXRGbGFnLmNw
cCAqLywKQEAgLTEwMjczLDcgKzEwMjY4LDYgQEAKIAkJCQlFMzVBMEI5RDIyMEFEODdBMDBBQzQ0
NzQgLyogRXhlY3V0YWJsZUJhc2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDE0MkU1
MzFCNzk2RUREMDBGNEJGNEIgLyogRXhlY3V0YWJsZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNTE5M0Y3MjY2QzQzMkQwMDQ4M0EyQyAvKiBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlLmggaW4g
SGVhZGVycyAqLywKLQkJCQkwRjYwRkU5MDFGRkMzNzAyMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NkExRDMxNTAwMEYzNTAwMjk5
MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDRBN0IwMjBC
RjY4NjIwMDIyQjE3MSAvKiBFeGl0RmxhZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NEE3QjEy
MEJGNjhDOTAwMjJCMTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4NGE5NjI0MWRiMWQ4M2JiY2RhZDNjMTllY2Ez
ZTUzOWM2ZmI3YmY3Li4wNTA2OWM1NDg5MjQ4YTdkMDJjNTc2ZDAwYjkzMTIxNmE0MDNlYTI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yMjksNyArMjI5LDYgQEAgYnl0ZWNvZGUv
RGVsZXRlQnlTdGF0dXMuY3BwCiBieXRlY29kZS9EZWxldGVCeVZhcmlhbnQuY3BwCiBieXRlY29k
ZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcAogYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5jcHAKLWJ5
dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCiBieXRlY29kZS9FeGVjdXRpb25D
b3VudGVyLmNwcAogYnl0ZWNvZGUvRXhpdEZsYWcuY3BwCiBieXRlY29kZS9FeGl0S2luZC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNmQ5
ZDhiNTFlMTE5ZGJjMDc4MDkxMTRlMWNiMTBlZGI2NzI4NDU3OC4uNmIwMjkxNTBiNTEyYmMzOTVh
MzE5MDI4ZTJlYzVhN2Q4ZWY4YTg4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKQEAgLTMxMSw3ICszMTEsNiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9j
ayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVC
bG9jawogdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJs
b2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKLSAgICBmaW5pc2hDcmVhdGlvbkNvbW1vbih2bSk7CiAKICAgICBvcHRpbWl6ZUFmdGVyV2Fy
bVVwKCk7CiAKQEAgLTM2Nyw3ICszNjYsNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAg
IEpTU2NvcGUqIHNjb3BlKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBm
aW5pc2hDcmVhdGlvbkNvbW1vbih2bSk7CiAKICAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVk
KCkpOwogCkBAIC03NjYsMTEgKzc2NCw2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbkNvbW1vbihW
TSYgdm0pCi17Ci0gICAgbV9vd25lckVkZ2Uuc2V0KHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOjpjcmVhdGUodm0sIHRoaXMpKTsKLX0KLQogI2lmIEVOQUJMRShKSVQpCiB2b2lk
IENvZGVCbG9jazo6c2V0dXBXaXRoVW5saW5rZWRCYXNlbGluZUNvZGUoUmVmPEJhc2VsaW5lSklU
Q29kZT4gaml0Q29kZSkKIHsKQEAgLTEwNTEsNyArMTA0NCw2IEBAIHZvaWQgQ29kZUJsb2NrOjp2
aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgQ29k
ZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0PENvZGVCbG9jayo+KGNlbGwpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fb3duZXJFZGdlKTsKICAgICB0aGlzT2JqZWN0LT52aXNpdENoaWxkcmVuKHZpc2l0b3IpOwog
fQogCkBAIC0xMDc5LDcgKzEwNzEsNyBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihW
aXNpdG9yJiB2aXNpdG9yKQogICAgIHN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGxvY2tl
ciwgdmlzaXRvcik7CiAgICAgc3Ryb25nbHlWaXNpdFdlYWtSZWZlcmVuY2VzKGxvY2tlciwgdmlz
aXRvcik7CiAgICAgCi0gICAgSGVhcDo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSku
YWRkKHRoaXMpOworICAgIEhlYXA6OkNvZGVCbG9ja1NwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNw
YWNlKCkpLmFkZCh0aGlzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTE2
NjcsNyArMTY1OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShW
TSYgdm0pCiAgICAgfTsKICAgICB1cGRhdGVBY3Rpdml0eSgpOwogCi0gICAgSGVhcDo6U3BhY2VB
bmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOworICAgIEhlYXA6OkNvZGVC
bG9ja1NwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKIAogICAg
IC8vIEluIENvZGVCbG9jazo6c2hvdWxkVmlzaXRTdHJvbmdseSgpIHdlIG1heSBoYXZlIGRlY2lk
ZWQgdG8gc2tpcCB2aXNpdGluZyB0aGlzCiAgICAgLy8gY29kZUJsb2NrLiBCeSB0aGUgdGltZSB3
ZSBnZXQgaGVyZSwgd2UncmUgZG9uZSB3aXRoIHRoZSB2ZXJpZmllciBHQy4gU28sIGxldCdzCkBA
IC0xODM0LDcgKzE4MjYsNyBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1Jl
ZmVyZW5jZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsCiAgICAgVU5VU0VEX1BB
UkFNKGxvY2tlcik7CiAgICAgCiAgICAgdmlzaXRvci5hcHBlbmQobV9nbG9iYWxPYmplY3QpOwot
ICAgIHZpc2l0b3IuYXBwZW5kKG1fb3duZXJFeGVjdXRhYmxlKTsgLy8gVGhpcyBpcyBleHRyYSBp
bXBvcnRhbnQgc2luY2UgaXQgY2F1c2VzIHRoZSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlIHRv
IGJlIG1hcmtlZC4KKyAgICB2aXNpdG9yLmFwcGVuZChtX293bmVyRXhlY3V0YWJsZSk7IC8vIFRo
aXMgaXMgZXh0cmEgaW1wb3J0YW50IHNpbmNlIGl0IGNhdXNlcyB0aGUgRXhlY3V0YWJsZSAtPiBD
b2RlQmxvY2sgZWRnZSBhY3RpdmF0ZWQuCiAgICAgdmlzaXRvci5hcHBlbmQobV91bmxpbmtlZENv
ZGUpOwogICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2RpcmVjdEV2
YWxDb2RlQ2FjaGUudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNDY5NjNkNzNkZTIzZTAxZmQxNTI1NDUxYTgz
NDdiNmM3NzVjMTgyNi4uMjdhODMzNTE4MDAxMzY5ODU0MmU0N2I1NDNjYWIzMmJhM2FjY2YzMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtODcsMTIg
Kzg3LDEyIEBAIGNsYXNzIFVuYXJ5QXJpdGhQcm9maWxlOwogY2xhc3MgQmluYXJ5QXJpdGhQcm9m
aWxlOwogY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgQ29kZUJsb2NrU2V0
OwotY2xhc3MgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTsKIGNsYXNzIEpTTW9kdWxlRW52aXJv
bm1lbnQ7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ7CiBjbGFzcyBNZXRhZGF0YVRhYmxlOwog
Y2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CitjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xh
c3MgU3RydWN0dXJlU3R1YkluZm87CiBjbGFzcyBCYXNlbGluZUpJVENvZGU7CiBjbGFzcyBCYXNl
bGluZUpJVERhdGE7CkBAIC0xMzQsOCArMTM0LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgQ29weVBhcnNlZEJsb2Nr
VGFnLCBDb2RlQmxvY2smIG90aGVyKTsKICAgICBib29sIGZpbmlzaENyZWF0aW9uKFZNJiwgU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTU2Nv
cGUqKTsKLSAgICAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uQ29tbW9uKFZNJik7CiAKICAgICBX
cml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogCkBAIC0zNjksOCAr
MzY3LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgCiAgICAgU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9vd25lckV4
ZWN1dGFibGUuZ2V0KCk7IH0KICAgICAKLSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBv
d25lckVkZ2UoKSBjb25zdCB7IHJldHVybiBtX293bmVyRWRnZS5nZXQoKTsgfQotCiAgICAgVk0m
IHZtKCkgY29uc3QgeyByZXR1cm4gKm1fdm07IH0KIAogICAgIFZpcnR1YWxSZWdpc3RlciB0aGlz
UmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+dGhpc1JlZ2lzdGVyKCk7
IH0KQEAgLTg0OSw3ICs4NDUsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsK
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrU2V0OwotICAgIGZyaWVuZCBj
bGFzcyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOworICAgIGZyaWVuZCBjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGU7CisgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPiBBTFdBWVNfSU5MSU5FIHZvaWQgdmlzaXRDaGlsZHJl
bihWaXNpdG9yJik7CiAKQEAgLTkyMyw3ICs5MjAsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKIAogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZENvZGVCbG9jaz4gbV91bmxp
bmtlZENvZGU7CiAgICAgV3JpdGVCYXJyaWVyPFNjcmlwdEV4ZWN1dGFibGU+IG1fb3duZXJFeGVj
dXRhYmxlOwotICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX293
bmVyRWRnZTsKICAgICAvLyBtX3ZtIG11c3QgYmUgYSBwb2ludGVyIChpbnN0ZWFkIG9mIGEgcmVm
ZXJlbmNlKSBiZWNhdXNlIHRoZSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IKICAgICAvLyBjYW5u
b3QgaGFuZGxlIGl0IGJlaW5nIGEgcmVmZXJlbmNlLgogICAgIFZNKiBtX3ZtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmRkYjdhNjY1Nzk5
YjY3NzY3YjMwNGZlNWYzNTg5NDdhZDQ3OTM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKLQot
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCi0j
aW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5o
IgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U6OnNfaW5mbyA9IHsgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UiX3MsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZSkgfTsKLQotU3RydWN0dXJlKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKLXsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwotfQotCi1FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOjpjcmVhdGUoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKLXsKLSAgICBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bSkpIEV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2Uodm0sIGNvZGVCbG9jayk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwot
ICAgIEFTU0VSVCghaXNBY3RpdmUoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+
Ci12b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2Vs
bCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7
Ci0gICAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSA9IGpzQ2FzdDxFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlKj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
ZWxsLCBpbmZvKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7Ci0K
LSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGVkZ2UtPm1fY29kZUJsb2NrLmdldCgpOwotCi0g
ICAgLy8gSXQncyBwb3NzaWJsZSBmb3Igc29tZW9uZSB0byBob2xkIGEgcG9pbnRlciB0byB0aGUg
ZWRnZSBhZnRlciB0aGUgZWRnZSBoYXMgY2xlYXJlZCBpdHMgd2VhawotICAgIC8vIHJlZmVyZW5j
ZSB0byB0aGUgY29kZUJsb2NrLiBJbiBhIGNvbnNlcnZhdGl2ZSBHQyBsaWtlIG91cnMsIHRoYXQg
Y291bGQgaGFwcGVuIGF0IHJhbmRvbSBmb3IKLSAgICAvLyBubyBnb29kIHJlYXNvbiBhbmQgaXQn
cyBUb3RhbGx5IE9LIChUTSkuIFNlZSBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpIGZvciB3aGVy
ZSB3ZSBjbGVhcgotICAgIC8vIG1fY29kZUJsb2NrLgotICAgIGlmICghY29kZUJsb2NrKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKCFlZGdlLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAg
IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9s
b2NrKTsKLQotICAgIGlmIChjb2RlQmxvY2stPnNob3VsZFZpc2l0U3Ryb25nbHkobG9ja2VyLCB2
aXNpdG9yKSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwot
ICAgIAotICAgIGlmICghdmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5l
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkuYWRkKGVkZ2UpOwotICAg
IAotICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkp
KSB7Ci0gICAgICAgIC8vIElmIHdlIGpldHRpc29uIG91cnNlbHZlcyB3ZSdsbCBpbnN0YWxsIG91
ciBhbHRlcm5hdGl2ZSwgc28gbWFrZSBzdXJlIHRoYXQgaXQKLSAgICAgICAgLy8gc3Vydml2ZXMg
R0MgZXZlbiBpZiB3ZSBkb24ndC4KLSAgICAgICAgdmlzaXRvci5hcHBlbmQoY29kZUJsb2NrLT5t
X2FsdGVybmF0aXZlKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gTk9URTogVGhlcmUgYXJlIHR3byBz
aWRlcyB0byB0aGlzIGNvbnN0cmFpbnQsIHdpdGggZGlmZmVyZW50IHJlcXVpcmVtZW50cyBmb3Ig
Y29ycmVjdG5lc3MuCi0gICAgLy8gQmVjYXVzZSBldmVyeXRoaW5nIGlzIHVsdGltYXRlbHkgcHJv
dGVjdGVkIHdpdGggd2VhayByZWZlcmVuY2VzIGFuZCBqZXR0aXNvbmluZywgaXQncwotICAgIC8v
IGFsd2F5cyAiT0siIHRvIGNsYWltIHRoYXQgc29tZXRoaW5nIGlzIGRlYWQgcHJlbWF0dXJlbHkg
YW5kIGl0J3MgIk9LIiB0byBrZWVwIHRoaW5ncyBhbGl2ZS4KLSAgICAvLyBCdXQgYm90aCBjaG9p
Y2VzIGNvdWxkIGxlYWQgdG8gYmFkIHBlcmYgLSBlaXRoZXIgcmVjb21wIGN5Y2xlcyBvciBsZWFr
cy4KLSAgICAvLwotICAgIC8vIERldGVybWluaW5nIENvZGVCbG9jayBsaXZlbmVzczogVGhpcyBw
YXJ0IGlzIHRoZSBtb3N0IGNvbnNlcXVlbnRpYWwuIFdlIHdhbnQgdG8ga2VlcCB0aGUKLSAgICAv
LyBvdXRwdXQgY29uc3RyYWludCBhY3RpdmUgc28gbG9uZyBhcyB3ZSB0aGluayB0aGF0IHdlIG1h
eSB5ZXQgcHJvdmUgdGhhdCB0aGUgQ29kZUJsb2NrIGlzCi0gICAgLy8gbGl2ZSBidXQgd2UgaGF2
ZW4ndCBkb25lIGl0IHlldC4KLSAgICAvLwotICAgIC8vIE1hcmtpbmcgU3RydWN0dXJlcyBpZiBw
cm9maXRhYmxlOiBJdCdzIGltcG9ydGFudCB0aGF0IHdlIGRvIGEgcGFzcyBvZiB0aGlzLiBMb2dp
Y2FsbHksIHRoaXMKLSAgICAvLyBzZWVtcyBsaWtlIGl0IGlzIGEgY29uc3RyYWludCBvZiBDb2Rl
QmxvY2suIEJ1dCB3ZSBoYXZlIGFsd2F5cyBmaXJzdCBydW4gdGhpcyBhcyBhIHJlc3VsdAotICAg
IC8vIG9mIHRoZSBlZGdlIGJlaW5nIG1hcmtlZCBldmVuIGJlZm9yZSB3ZSBkZXRlcm1pbmUgdGhl
IGxpdmVuZXNzIG9mIHRoZSBDb2RlQmxvY2suIFRoaXMKLSAgICAvLyBhbGxvd3MgYSBDb2RlQmxv
Y2sgdG8gbWFyayBpdHNlbGYgYnkgZmlyc3QgcHJvdmluZyB0aGF0IGFsbCBvZiB0aGUgU3RydWN0
dXJlcyBpdCB3ZWFrbHkKLSAgICAvLyBkZXBlbmRzIG9uIGNvdWxkIGJlIHN0cm9uZ2x5IG1hcmtl
ZC4gKFRoaXMgcGFydCBpcyBhbHNvIGNhbGxlZCBwcm9wYWdhdGVUcmFuc2l0aW9ucy4pCi0gICAg
Ly8KLSAgICAvLyBBcyBhIHdlaXJkIGNhdmVhdCwgd2Ugb25seSBmaXhwb2ludCB0aGUgY29uc3Ry
YWludHMgc28gbG9uZyBhcyB0aGUgQ29kZUJsb2NrIGlzIG5vdCBsaXZlLgotICAgIC8vIFRoaXMg
bWVhbnMgdGhhdCB3ZSBtYXkgb3Zlcmxvb2sgc3RydWN0dXJlIG1hcmtpbmcgb3Bwb3J0dW5pdGll
cyBjcmVhdGVkIGJ5IG90aGVyIG1hcmtpbmcKLSAgICAvLyB0aGF0IGhhcHBlbnMgYWZ0ZXIgdGhl
IENvZGVCbG9jayBpcyBtYXJrZWQuIFRoaXMgd2FzIGFuIGFjY2lkZW50YWwgcG9saWN5IGRlY2lz
aW9uIGZyb20gYQotICAgIC8vIGxvbmcgdGltZSBhZ28sIGJ1dCBpdCBpcyBwcm9iYWJseSBPSywg
c2luY2UgaXQncyBvbmx5IHdvcnRod2hpbGUgdG8ga2VlcCBmaXhwb2ludGluZyB0aGUKLSAgICAv
LyBzdHJ1Y3R1cmUgbWFya2luZyBpZiB3ZSBzdGlsbCBoYXZlIHVubWFya2VkIHN0cnVjdHVyZXMg
YWZ0ZXIgdGhlIGZpcnN0IHJvdW5kLiBXZSBhbG1vc3QKLSAgICAvLyBuZXZlciB3aWxsIGJlY2F1
c2Ugd2Ugd2lsbCBtYXJrLWlmLXByb2ZpdGFibGUgYmFzZWQgb24gdGhlIG93bmluZyBnbG9iYWwg
b2JqZWN0IGJlaW5nCi0gICAgLy8gYWxyZWFkeSBtYXJrZWQuIFdlIG1hcmsgaXQganVzdCBpbiBj
YXNlIHRoYXQgaGFkbid0IGhhcHBlbmVkIHlldC4gQW5kIGlmIHRoZSBDb2RlQmxvY2sgaXMKLSAg
ICAvLyBub3QgeWV0IG1hcmtlZCBiZWNhdXNlIGl0IHdlYWtseSBkZXBlbmRzIG9uIGEgc3RydWN0
dXJlIHRoYXQgd2UgZGlkIG5vdCB5ZXQgbWFyaywgdGhlbiB3ZQotICAgIC8vIHdpbGwga2VlcCBm
aXhwb2ludGluZyB1bnRpbCB0aGUgZW5kLgotICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQo
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXNXaXRoQ29uc3RyYWludHMoKS5hZGQoZWRnZSk7Ci0gICAgZWRnZS0+cnVuQ29uc3RyYWlu
dChsb2NrZXIsIHZtLCB2aXNpdG9yKTsKLX0KLQotREVGSU5FX1ZJU0lUX0NISUxEUkVOKEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2UpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotdm9p
ZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbChK
U0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgVk0mIHZtID0gdmlzaXRvci52
bSgpOwotICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2UgPSBqc0Nhc3Q8RXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZSo+KGNlbGwpOwotICAgIAotICAgIGVkZ2UtPnJ1bkNvbnN0cmFp
bnQoTm9Mb2NraW5nTmVjZXNzYXJ5LCB2bSwgdmlzaXRvcik7Ci19Ci0KLURFRklORV9WSVNJVF9P
VVRQVVRfQ09OU1RSQUlOVFMoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSk7Ci0KLXZvaWQgRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQot
ewotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2suZ2V0KCk7Ci0gICAgCi0g
ICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKGNvZGVCbG9jaykpIHsKLSAgICAgICAgaWYgKGNvZGVC
bG9jay0+c2hvdWxkSmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2Uodm0pKQotICAgICAgICAgICAg
Y29kZUJsb2NrLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2Up
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb2RlQmxvY2stPmpldHRpc29uKFByb2ZpbGVy
OjpKZXR0aXNvbkR1ZVRvT2xkQWdlKTsKLSAgICAgICAgbV9jb2RlQmxvY2suY2xlYXIoKTsKLSAg
ICB9Ci0gICAgCi0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVy
cygpLnJlbW92ZSh0aGlzKTsKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhD
b25zdHJhaW50cygpLnJlbW92ZSh0aGlzKTsKLX0KLQotaW5saW5lIHZvaWQgRXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZTo6YWN0aXZhdGUoKQotewotICAgIHNldFBlckNlbGxCaXQodHJ1ZSk7Ci19
Ci0KLWlubGluZSB2b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGUoKQot
ewotICAgIHNldFBlckNlbGxCaXQoZmFsc2UpOwotfQotCi1pbmxpbmUgYm9vbCBFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHBlckNlbGxC
aXQoKTsKLX0KLQotQ29kZUJsb2NrKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFjdGl2
YXRlQW5kVW53cmFwKEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2UpCi17Ci0gICAgaWYg
KCFlZGdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBlZGdlLT5kZWFjdGl2YXRlKCk7
Ci0gICAgcmV0dXJuIGVkZ2UtPmNvZGVCbG9jaygpOwotfQotCi1FeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwKENvZGVCbG9jayogY29kZUJs
b2NrKQotewotICAgIGlmICghY29kZUJsb2NrKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gY29kZUJsb2NrLT5vd25lckVkZ2UoKTsKLX0KLSAgICAKLUV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UqIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3RpdmF0ZShD
b2RlQmxvY2sqIGNvZGVCbG9jaykKLXsKLSAgICBpZiAoIWNvZGVCbG9jaykKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogcmVzdWx0ID0gY29k
ZUJsb2NrLT5vd25lckVkZ2UoKTsKLSAgICByZXN1bHQtPmFjdGl2YXRlKCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6RXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQotICAgIDogQmFzZSh2bSwg
dm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fY29k
ZUJsb2NrKHZtLCB0aGlzLCBjb2RlQmxvY2spCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFZp
c2l0b3I+Ci12b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgVmlzaXRvciYgdmlzaXRvcikK
LXsKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2NrLmdldCgpOwotICAgIAot
ICAgIGNvZGVCbG9jay0+cHJvcGFnYXRlVHJhbnNpdGlvbnMobG9ja2VyLCB2aXNpdG9yKTsKLSAg
ICBjb2RlQmxvY2stPmRldGVybWluZUxpdmVuZXNzKGxvY2tlciwgdmlzaXRvcik7Ci0KLSAgICBp
ZiAodmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cygpLnJlbW92ZSh0aGlzKTsKLX0KLQotdGVtcGxh
dGUgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwotdGVtcGxhdGUg
dm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIFZNJiwgU2xvdFZpc2l0b3ImKTsKLQotCi19IC8vIG5hbWVzcGFjZSBK
U0MKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZj
YTZmOWI0ZThlMWFhYTJlNzBhM2QwMWNmMzlmMjk2NmJjOTM0NjIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKLSNpbmNsdWRl
ICJJc29TdWJzcGFjZS5oIgotI2luY2x1ZGUgIkpTQ2FzdC5oIgotI2luY2x1ZGUgIlZNLmgiCi0K
LW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBDb2RlQmxvY2s7Ci1jbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7Ci0KLWNsYXNzIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+Ci0gICAgc3RhdGljIEdDQ2xpZW50OjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlU3BhY2UoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQot
ICAgIHN0YXRpYyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBjcmVhdGUoVk0mLCBDb2RlQmxv
Y2sqKTsKLSAgICAKLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
aygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLmdldCgpOyB9Ci0KLSAgICBERUNMQVJFX1ZJ
U0lUX0NISUxEUkVOOwotICAgIERFQ0xBUkVfVklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTOwotICAg
IHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKLSAgICAKLSAgICBzdGF0aWMgQ29k
ZUJsb2NrKiB1bndyYXAoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSkKLSAgICB7Ci0g
ICAgICAgIGlmICghZWRnZSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBy
ZXR1cm4gZWRnZS0+Y29kZUJsb2NrKCk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBDb2RlQmxv
Y2sqIGRlYWN0aXZhdGVBbmRVbndyYXAoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSk7
Ci0gICAgCi0gICAgc3RhdGljIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIHdyYXAoQ29kZUJs
b2NrKiBjb2RlQmxvY2spOwotICAgIAotICAgIHN0YXRpYyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlKiB3cmFwQW5kQWN0aXZhdGUoQ29kZUJsb2NrKiBjb2RlQmxvY2spOwotCi0gICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVCbG9jaygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLCBtX2NvZGVCbG9jayk7IH0KLSAgICAKLXByaXZhdGU6
Ci0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAgIEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2UoVk0mLCBDb2RlQmxvY2sqKTsKLQotICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKLQotICAgIHZvaWQgYWN0aXZhdGUoKTsKLSAgICB2b2lkIGRlYWN0aXZhdGUo
KTsKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBW
aXNpdG9yPiB2b2lkIHJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0m
LCBWaXNpdG9yJik7Ci0KLSAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApp
bmRleCA4ZTUzZGRlYWQxZmQ0NTU4MGY1Zjk0ZDQ4ZWNmYWNlMTdjNzc3MDYxLi43MWI4NzgzYjJi
ZjZhMjFjNjk2MzYzNzUyNTU2M2I0MzU4ZDZjNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcApAQCAtMzY4LDggKzM2OCw2IEBAIEhlYXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKICAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9i
amVjdCIsICp0aGlzLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NB
bGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQogICAgIEZPUl9FQUNIX0pTQ19DT01N
T05fSVNPX1NVQlNQQUNFKElOSVRfU0VSVkVSX0lTT19TVUJTUEFDRSkKICAgICBGT1JfRUFDSF9K
U0NfU1RSVUNUVVJFX0lTT19TVUJTUEFDRShJTklUX1NFUlZFUl9TVFJVQ1RVUkVfSVNPX1NVQlNQ
QUNFKQotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoZXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXNXaXRoRmluYWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCiAgICAg
LCBjb2RlQmxvY2tTcGFjZUFuZFNldCBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgQ29kZUJsb2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKICAgICAs
IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6
MHg1ZDE1OGYzCiAgICAgLCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlQW5kU2V0IElTT19TVUJTUEFD
RV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9ncmFtRXhlY3V0
YWJsZSkgLy8gSGFzaDoweDUyN2M3N2U3CkBAIC02NzQsOSArNjcyLDIyIEBAIHZvaWQgSGVhcDo6
ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpCiB7CiAgICAgVk0mIHZtID0gdGhpcy0+
dm0oKTsKICAgICB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkoKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9u
RXhlY3V0YWJsZT4oZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQuc3BhY2UpOworCisgICAg
eworICAgICAgICAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25h
bCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxl
J3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCisK
KyAgICAgICAgLy8gRnVuY3Rpb25FeGVjdXRhYmxlIHJlcXVpcmVzIGFsbCBsaXZlIGluc3RhbmNl
cyB0byBydW4gZmluYWxpemVycy4gVGh1cywgd2UgZG8gbm90IHVzZSBmaW5hbGl6ZXIgc2V0Lgor
ICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhl
Y3V0YWJsZT4oZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQuc3BhY2UpOworCisgICAgICAg
IGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8UHJvZ3JhbUV4ZWN1dGFibGU+
KHByb2dyYW1FeGVjdXRhYmxlU3BhY2VBbmRTZXQuZmluYWxpemVyU2V0KTsKKyAgICAgICAgaWYg
KG1fZXZhbEV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8RXZhbEV4ZWN1dGFibGU+KG1fZXZhbEV4ZWN1dGFibGVTcGFjZS0+
ZmluYWxpemVyU2V0KTsKKyAgICAgICAgaWYgKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFj
ZSkKKyAgICAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8TW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGU+KG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZS0+Zmlu
YWxpemVyU2V0KTsKKyAgICB9CisKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXJzPFN5bWJvbFRhYmxlPihzeW1ib2xUYWJsZVNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KGV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZv
cmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxv
b2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMg
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCisKICAgICBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoCiAg
ICAgICAgIFsmXSAoYXV0byYgc3BhY2UpIHsKICAgICAgICAgICAgIHRoaXMtPmZpbmFsaXplTWFy
a2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8Q29kZUJsb2NrPihzcGFjZS5zZXQpOwpAQCAtMTAw
Myw3ICsxMDE0LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKERlbGV0ZUFsbENv
ZGVFZmZvcnQgZWZmb3J0KQogICAgIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoCiAgICAg
ICAgIFsmXSAoYXV0byYgc3BhY2VBbmRTZXQpIHsKICAgICAgICAgICAgIEhlYXBJdGVyYXRpb25T
Y29wZSBoZWFwSXRlcmF0aW9uU2NvcGUoKnRoaXMpOwotICAgICAgICAgICAgYXV0byYgc2V0ID0g
c3BhY2VBbmRTZXQuc2V0OworICAgICAgICAgICAgYXV0byYgc2V0ID0gc3BhY2VBbmRTZXQuY2xl
YXJhYmxlQ29kZVNldDsKICAgICAgICAgICAgIHNldC5mb3JFYWNoTGl2ZUNlbGwoCiAgICAgICAg
ICAgICAgICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKICAgICAgICAg
ICAgICAgICAgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PFNj
cmlwdEV4ZWN1dGFibGUqPihjZWxsKTsKQEAgLTI5MTcsNyArMjkyOCwxMiBAQCB2b2lkIEhlYXA6
OmFkZENvcmVDb25zdHJhaW50cygpCiAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBT
ZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBSb290TWFya1JlYXNvbjo6
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXMpOwotICAgICAgICAgICAgICAgIGFkZChoZWFwLT5l
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyk7CisgICAgICAgICAgICAg
ICAgYWRkKGhlYXAtPmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0Lm91dHB1dENvbnN0cmFp
bnRzU2V0KTsKKyAgICAgICAgICAgICAgICBhZGQoaGVhcC0+cHJvZ3JhbUV4ZWN1dGFibGVTcGFj
ZUFuZFNldC5vdXRwdXRDb25zdHJhaW50c1NldCk7CisgICAgICAgICAgICAgICAgaWYgKGhlYXAt
Pm1fZXZhbEV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAgICAgICAgICAgYWRkKGhlYXAtPm1f
ZXZhbEV4ZWN1dGFibGVTcGFjZS0+b3V0cHV0Q29uc3RyYWludHNTZXQpOworICAgICAgICAgICAg
ICAgIGlmIChoZWFwLT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCisgICAgICAgICAg
ICAgICAgICAgIGFkZChoZWFwLT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UtPm91dHB1
dENvbnN0cmFpbnRzU2V0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChoZWFwLT5t
X3dlYWtNYXBTcGFjZSkgewogICAgICAgICAgICAgICAgIFNldFJvb3RNYXJrUmVhc29uU2NvcGUg
cm9vdFNjb3BlKHZpc2l0b3IsIFJvb3RNYXJrUmVhc29uOjpXZWFrTWFwU3BhY2UpOwpAQCAtMzE2
OSwxOCArMzE4NSwxOCBAQCBGT1JfRUFDSF9KU0NfRFlOQU1JQ19JU09fU1VCU1BBQ0UoREVGSU5F
X0RZTkFNSUNfSVNPX1NVQlNQQUNFX01FTUJFUl9TTE9XKQogCiAjdW5kZWYgREVGSU5FX0RZTkFN
SUNfSVNPX1NVQlNQQUNFX01FTUJFUl9TTE9XCiAKLSNkZWZpbmUgREVGSU5FX0RZTkFNSUNfU1BB
Q0VfQU5EX1NFVF9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKKyNkZWZp
bmUgREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2Vs
bFR5cGUsIHR5cGUsIHNwYWNlVHlwZSkgXAogICAgIElzb1N1YnNwYWNlKiBIZWFwOjpuYW1lIyNT
bG93KCkgXAogICAgIHsgXAogICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAotICAgICAgICBh
dXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQQUNFX0lOSVQoKnRo
aXMsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlx
dWU8c3BhY2VUeXBlPiBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgaGVhcENlbGxUeXBlLCB0eXBl
KTsgXAogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBcCiAgICAgICAgIG1fIyNuYW1l
ID0gV1RGTW92ZShzcGFjZSk7IFwKICAgICAgICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwK
ICAgICB9CiAKLURFRklORV9EWU5BTUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NMT1coZXZhbEV4
ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFi
bGUpIC8vIEhhc2g6MHg5NThlM2U5ZAotREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1C
RVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY1MDZmYTNjCitE
RUZJTkVfRFlOQU1JQ19TUEFDRV9BTkRfU0VUX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3Bh
Y2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV2YWxFeGVjdXRhYmxlLCBIZWFwOjpT
Y3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQpIC8vIEhhc2g6MHg5NThlM2U5ZAorREVGSU5FX0RZ
TkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNw
YWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZSwgSGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0KSAvLyBIYXNoOjB4NjUwNmZhM2MK
IAogI3VuZGVmIERFRklORV9EWU5BTUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NMT1cKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IGFmMGU0YzQ2YTZjZWE3MDZiY2IxYWVlYzQxMmYx
OWQ1MWJiNDgxNTIuLmZhZDg1OTk4ZWE0N2I5MjFkYzQ2YjU5MzMwMjU0MWUyYmZlM2I3YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTEyMCw3ICsxMjAsNiBAQCBjbGFzcyBIZWFw
OwogICAgIHYoZGF0ZUluc3RhbmNlU3BhY2UsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRGF0
ZUluc3RhbmNlKSBcCiAgICAgdihkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZSwgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKSBcCiAgICAgdihleGNlcHRpb25T
cGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXhjZXB0aW9uKSBcCi0gICAgdihl
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2UpIFwKICAgICB2KGZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUsIEpTRnVuY3Rpb24pIFwKICAgICB2KGdldHRlclNldHRlclNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBHZXR0ZXJTZXR0ZXIpIFwKICAgICB2KGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNl
LCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50KSBcCkBAIC0xMDI5LDEwICsxMDI4LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgRk9S
X0VBQ0hfSlNDX0RZTkFNSUNfSVNPX1NVQlNQQUNFKERFRklORV9EWU5BTUlDX0lTT19TVUJTUEFD
RV9NRU1CRVIpCiAjdW5kZWYgREVGSU5FX0RZTkFNSUNfSVNPX1NVQlNQQUNFX01FTUJFUgogICAg
IAotICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWlu
dHM7Ci0gICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6
ZXJzOwotCi0jZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG5hbWUp
IFwKKyNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobmFtZSwgdHlw
ZSkgXAogICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKICAgICBJc29TdWJzcGFj
ZSogbmFtZSgpIFwKICAgICB7IFwKQEAgLTEwNDMsNyArMTAzOSw3IEBAIGNsYXNzIEhlYXAgewog
ICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCiAgICAgfSBcCiAgICAgSXNvU3Vic3BhY2Uq
IG5hbWUjI1Nsb3coKTsgXAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGFjZUFuZFNldD4gbV8jI25h
bWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPHR5cGU+IG1fIyNuYW1lOwogICAgIAogICAgIHN0cnVj
dCBTcGFjZUFuZFNldCB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
QEAgLTEwNjcsNyArMTA2Myw4IEBAIGNsYXNzIEhlYXAgewogICAgICAgICB9CiAgICAgfTsKIAot
ICAgIFNwYWNlQW5kU2V0IGNvZGVCbG9ja1NwYWNlQW5kU2V0OworICAgIHVzaW5nIENvZGVCbG9j
a1NwYWNlQW5kU2V0ID0gU3BhY2VBbmRTZXQ7CisgICAgQ29kZUJsb2NrU3BhY2VBbmRTZXQgY29k
ZUJsb2NrU3BhY2VBbmRTZXQ7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZv
aWQgZm9yRWFjaENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCkBAIC0xMDc1LDEwICsx
MDcyLDM5IEBAIGNsYXNzIEhlYXAgewogICAgICAgICBmdW5jKGNvZGVCbG9ja1NwYWNlQW5kU2V0
KTsKICAgICB9CiAKLSAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihldmFs
RXhlY3V0YWJsZVNwYWNlKQotICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVS
KG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCi0gICAgU3BhY2VBbmRTZXQgZnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2VBbmRTZXQ7Ci0gICAgU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVT
cGFjZUFuZFNldDsKKyAgICBzdHJ1Y3QgU2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0IHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIElzb1N1YnNw
YWNlIHNwYWNlOworICAgICAgICBJc29DZWxsU2V0IGNsZWFyYWJsZUNvZGVTZXQ7CisgICAgICAg
IElzb0NlbGxTZXQgb3V0cHV0Q29uc3RyYWludHNTZXQ7CisgICAgICAgIElzb0NlbGxTZXQgZmlu
YWxpemVyU2V0OworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAg
ICAgICAgU2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50
cykKKyAgICAgICAgICAgIDogc3BhY2Uoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRz
KS4uLikKKyAgICAgICAgICAgICwgY2xlYXJhYmxlQ29kZVNldChzcGFjZSkKKyAgICAgICAgICAg
ICwgb3V0cHV0Q29uc3RyYWludHNTZXQoc3BhY2UpCisgICAgICAgICAgICAsIGZpbmFsaXplclNl
dChzcGFjZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIFNjcmlwdEV4
ZWN1dGFibGVTcGFjZUFuZFNldCYgc2V0QW5kU3BhY2VGb3IoU3Vic3BhY2UmIHNwYWNlKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxTY3JpcHRFeGVjdXRhYmxl
U3BhY2VBbmRTZXQqPigKKyAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZzcGFj
ZSkgLQorICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTY3JpcHRFeGVjdXRhYmxlU3Bh
Y2VBbmRTZXQsIHNwYWNlKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgSXNvQ2VsbFNl
dCYgY2xlYXJhYmxlQ29kZVNldEZvcihTdWJzcGFjZSYgc3BhY2UpIHsgcmV0dXJuIHNldEFuZFNw
YWNlRm9yKHNwYWNlKS5jbGVhcmFibGVDb2RlU2V0OyB9CisgICAgICAgIHN0YXRpYyBJc29DZWxs
U2V0JiBvdXRwdXRDb25zdHJhaW50c1NldEZvcihTdWJzcGFjZSYgc3BhY2UpIHsgcmV0dXJuIHNl
dEFuZFNwYWNlRm9yKHNwYWNlKS5vdXRwdXRDb25zdHJhaW50c1NldDsgfQorICAgICAgICBzdGF0
aWMgSXNvQ2VsbFNldCYgZmluYWxpemVyU2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkgeyByZXR1cm4g
c2V0QW5kU3BhY2VGb3Ioc3BhY2UpLmZpbmFsaXplclNldDsgfQorICAgIH07CisKKyAgICBEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNwYWNlLCBTY3Jp
cHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQpCisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklO
RV9NRU1CRVIobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwgU2NyaXB0RXhlY3V0YWJsZVNw
YWNlQW5kU2V0KQorICAgIFNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZUFuZFNldDsKKyAgICBTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQgcHJvZ3Jh
bUV4ZWN1dGFibGVTcGFjZUFuZFNldDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAg
ICAgdm9pZCBmb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCkBA
IC0xMDkxLDcgKzExMTcsOCBAQCBjbGFzcyBIZWFwIHsKICAgICAgICAgZnVuYyhwcm9ncmFtRXhl
Y3V0YWJsZVNwYWNlQW5kU2V0KTsKICAgICB9CiAKLSAgICBTcGFjZUFuZFNldCB1bmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0OworICAgIHVzaW5nIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2VBbmRTZXQgPSBTcGFjZUFuZFNldDsKKyAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlQW5kU2V0IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRT
ZXQ7CiAKICAgICBWZWN0b3I8SXNvU3Vic3BhY2VQZXJWTSo+IHBlclZNSXNvU3Vic3BhY2VzOwog
I3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKaW5kZXggY2NiODQ1ZWExMWZiZWE4ZTJhZGNlNTY2MWJk
ZWE4YzIxZTlhMmE5Zi4uOGJkN2U3ZWE1YTk0MjNlYWVhYWMwZjk0OWMxMGM0YzFmMGJhN2NkMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaApAQCAtMjksNiArMjksOCBA
QAogI2luY2x1ZGUgPHd0Zi9CaXRtYXAuaD4KICNpbmNsdWRlIDx3dGYvQ29uY3VycmVudFZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL05vbm1vdmFibGUuaD4KICNpbmNsdWRlIDx3dGYvU2Vu
dGluZWxMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KIApAQCAtNDAs
NyArNDIsOSBAQCBjbGFzcyBJc29TdWJzcGFjZTsKIC8vIENyZWF0ZSBhIHNldCBvZiBjZWxscyB0
aGF0IGFyZSBpbiBhbiBJc29TdWJzcGFjZS4gVGhpcyBhbGxvd3MgY29uY3VycmVudCBPKDEpIHNl
dCBpbnNlcnRpb24gYW5kCiAvLyByZW1vdmFsLiBFYWNoIHN1Y2ggc2V0IHNob3VsZCBiZSB0aG91
Z2h0IG9mIGFzIGEgMC44JSBpbmNyZWFzZSBpbiBvYmplY3Qgc2l6ZSBmb3Igb2JqZWN0cyBpbiB0
aGF0CiAvLyBJc29TdWJzcGFjZSAoaXQncyBsaWtlIGFkZGluZyAxIGJpdCBldmVyeSAxNiBieXRl
cywgb3IgMSBiaXQgZXZlcnkgMTI4IGJpdHMpLgotY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBQ
YWNrZWRSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4geworY2xhc3MgSXNvQ2VsbFNldCBmaW5h
bCA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4geworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKElzb0NlbGxTZXQpOworICAgIFdURl9NQUtFX05PTk1PVkFCTEUoSXNv
Q2VsbFNldCk7CiBwdWJsaWM6CiAgICAgSXNvQ2VsbFNldChJc29TdWJzcGFjZSYgc3Vic3BhY2Up
OwogICAgIH5Jc29DZWxsU2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZjEy
MzU1NzgyMGMzNGY4NzYyYzE4YTk1MDNmM2E5NmY3YjRjNjQxMi4uZWQ4ZmIwZjUzZTU3YTVhNTAy
ZjFjYTI3NjA1NDY3MDkwMGU4YmU5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAt
MjE1LDggKzIxNSw2IEBAIHZvaWQgSklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9n
dWUoR1BSUmVnIHJlc3VsdCkKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rp
b25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpKSwgcmVzdWx0KTsK
ICAgICBlbHNlCiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxsKCkpLCByZXN1bHQpOwotCi0gICAgbG9hZFB0
cihBZGRyZXNzKHJlc3VsdCwgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6b2Zmc2V0T2ZDb2Rl
QmxvY2soKSksIHJlc3VsdCk7CiAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlc3VsdCwg
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5k
ZXggM2UyYzZkZjYwYTQ3OGNhMTA5YWFkYThjMzNkNjBjOTk0YjVkM2MwMS4uMWZkYjRhNTdkNTk0
YmVlYTZlYmI4MGFhNjk3YmRhZDQzZjkwZjg3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTQ5Myw3ICsxNDkzLDYg
QEAgbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQog
ICAgIGxvYWRwIChGdW5jdGlvblJhcmVEYXRhOjptX2V4ZWN1dGFibGUgLSAoY29uc3RleHByIEpT
RnVuY3Rpb246OnJhcmVEYXRhVGFnKSlbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3Rlcgog
LmlzRXhlY3V0YWJsZToKICAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2Nr
Rm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgbG9hZHAgRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZTo6bV9jb2RlQmxvY2tbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRS
ZWdpc3RlcgogZW5kCiAKIG1hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVy
KHRhcmdldFJlZ2lzdGVyKQpAQCAtMTUwNyw3ICsxNTA2LDYgQEAgbWFjcm8gZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCiAgICAgbG9hZHAgKEZ1bmN0
aW9uUmFyZURhdGE6Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURh
dGFUYWcpKVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCiAuaXNFeGVjdXRhYmxlOgog
ICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFy
Z2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGxvYWRwIEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U6Om1fY29kZUJsb2NrW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKIGVu
ZAogCiBtYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcAppbmRleCBjYTAwZmIxYzZiNmRhNjk3NmZjYjE2ZTE2N2VmNjgyNDE2ZTE3MTYwLi45
ZDY4NWE3NTJjNjVmODViNTU4NmRmOGU1MzAwZDBhY2U2M2Q2YTExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2Nr
LnNldCh2bSwgZXhlY3V0YWJsZSwgdW5saW5rZWRFdmFsQ29kZSk7CisgICAgZXhlY3V0YWJsZS0+
bV91bmxpbmtlZENvZGVCbG9jay5zZXQodm0sIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUp
OwogCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggZGQ4NDkzMzgyZmY2MTQxMGJiZWVl
ZGQwYmJlMjc3ZGM1MjA4ZTYyZi4uYjg4NDljY2UxMTU3YzZkMWUzNDFlYWVmZGZhMWY0MWI4YzJl
ZjEwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1
dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRh
YmxlLmNwcApAQCAtNTYsOCArNTYsNiBAQCB2b2lkIEV2YWxFeGVjdXRhYmxlOjp2aXNpdENoaWxk
cmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgRXZhbEV4ZWN1dGFi
bGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihjZWxsKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX3VubGlua2VkRXZhbENvZGVCbG9jayk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9ldmFsQ29kZUJsb2NrKTsKICAgICBpZiAoVGVtcGxhdGVPYmplY3RNYXAqIG1h
cCA9IHRoaXNPYmplY3QtPm1fdGVtcGxhdGVPYmplY3RNYXAuZ2V0KCkpIHsKICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IHRoaXNPYmplY3QtPmNlbGxMb2NrKCkgfTsKICAgICAgICAgZm9yIChhdXRv
JiBlbnRyeSA6ICptYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4
ZWN1dGFibGUuaAppbmRleCA2NjMwNTRmYTU2N2IzZGFmYmYxMDNkMjg1OTczYWNkODE1NGJkMjc2
Li5lODVhM2E3YTM1ZmVmY2IzYTY2MmIwZmYwYzg0ZGQwYWExMjg5OTI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKQEAgLTI1LDcgKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
LmgiCiAjaW5jbHVkZSAiR2xvYmFsRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlVubGlua2VkRXZh
bENvZGVCbG9jay5oIgogCkBAIC0zOSw5ICszOCwxNCBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6
IHB1YmxpYyBHbG9iYWxFeGVjdXRhYmxlIHsKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAgICAgCi0gICAgRXZhbENvZGVCbG9jayogY29kZUJsb2NrKCkKKyAgICBFdmFsQ29k
ZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxFdmFsQ29kZUJsb2NrKj4oRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dW53cmFwKG1f
ZXZhbENvZGVCbG9jay5nZXQoKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEV2YWxD
b2RlQmxvY2sqPihCYXNlOjpjb2RlQmxvY2soKSk7CisgICAgfQorCisgICAgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PFVubGlua2VkRXZhbENvZGVCbG9jayo+KEJhc2U6OnVubGlua2VkQ29k
ZUJsb2NrKCkpOwogICAgIH0KIAogICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkK
QEAgLTYyLDEwICs2NiwxMCBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBHbG9iYWxF
eGVjdXRhYmxlIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIHVuc2lnbmVkIG51bVZhcmlh
YmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsg
fQotICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4g
bV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7
IH0KLSAgICB1bnNpZ25lZCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3Vu
bGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KLSAgICBib29s
IGFsbG93RGlyZWN0RXZhbENhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2Rl
QmxvY2stPmFsbG93RGlyZWN0RXZhbENhY2hlKCk7IH0KKyAgICB1bnNpZ25lZCBudW1WYXJpYWJs
ZXMoKSB7IHJldHVybiB1bmxpbmtlZENvZGVCbG9jaygpLT5udW1WYXJpYWJsZXMoKTsgfQorICAg
IHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gdW5saW5r
ZWRDb2RlQmxvY2soKS0+bnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKTsgfQorICAgIHVu
c2lnbmVkIG51bVRvcExldmVsRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIHVubGlua2VkQ29kZUJs
b2NrKCktPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CisgICAgYm9vbCBhbGxvd0RpcmVjdEV2
YWxDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrKCktPmFsbG93RGlyZWN0
RXZhbENhY2hlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyPihtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsgfQogICAgIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQpOyB9CiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRlbXBsYXRlT2Jq
ZWN0TWFwKFZNJik7CkBAIC04Miw4ICs4Niw2IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVi
bGljIEdsb2JhbEV4ZWN1dGFibGUgewogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgOiAxOwogICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAx
OwogCi0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fZXZhbENv
ZGVCbG9jazsKLSAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRFdmFsQ29kZUJsb2NrPiBtX3VubGlu
a2VkRXZhbENvZGVCbG9jazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplY3RNYXA+
IG1fdGVtcGxhdGVPYmplY3RNYXA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBkODFhYzYwNmY3NGQ4NTJi
OGRiZWU5M2RkZDU2NzY1OGJlMDc0OTk0Li5jMjE5Mzk5M2JhY2NiYjFkZWRlMjQ3M2U5ZTY2NWQ4
MGU0MzQxOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTI0LDEwICsyNCwxMyBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKIAogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAi
RnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uT3ZlcnJpZGVz
LmgiCisjaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTU1LDI3ICs1OCwyNiBAQCB2b2lkIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAKIEZ1bmN0aW9uQ29kZUJs
b2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKIHsKLSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBlZGdl
OworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICBpZiAoa2luZCA9PSBD
b2RlRm9yQ2FsbCkKLSAgICAgICAgZWRnZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC5nZXQoKTsKKyAg
ICAgICAgY29kZUJsb2NrID0gY29kZUJsb2NrRm9yQ2FsbCgpOwogICAgIGVsc2UgewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgICAgICBlZGdl
ID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCk7CisgICAgICAgIGNvZGVCbG9jayA9IGNv
ZGVCbG9ja0ZvckNvbnN0cnVjdCgpOwogICAgIH0KLSAgICBpZiAoIWVkZ2UpCisgICAgaWYgKCFj
b2RlQmxvY2spCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkNvZGVCbG9jayo+KGVkZ2UtPmNvZGVCbG9jaygpLT5iYXNlbGluZUFsdGVybmF0
aXZlKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KGNvZGVC
bG9jay0+YmFzZWxpbmVBbHRlcm5hdGl2ZSgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlz
aXRvcj4KIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwq
IGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiB7CisgICAgVk0mIHZtID0gdmlzaXRvci52bSgpOwog
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3RvcExldmVsRXhlY3V0YWJsZSk7Ci0g
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jb2RlQmxvY2tGb3JDYWxsKTsKLSAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV91bmxpbmtlZEV4ZWN1dGFibGUpOwogICAgIGlm
IChSYXJlRGF0YSogcmFyZURhdGEgPSB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLmdldCgpKSB7CiAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKHJhcmVEYXRhLT5tX2NhY2hlZFBvbHlQcm90b1N0cnVjdHVy
ZUlEKTsKQEAgLTg2LDEwICs4OCwzOSBAQCB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRD
aGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgICAgICAgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKGVudHJ5LnZhbHVlKTsKICAgICAgICAgfQogICAgIH0KKworICAg
IC8vIFNpbmNlIEZ1bmN0aW9uRXhlY3V0YWJsZSdzIGZpbmFsaXplciBhbHdheXMgbmVlZHMgdG8g
YmUgcnVuLCB3ZSBkbyBub3QgdHJhY2sgaXQgdmlhIGZpbmFsaXplclNldC4KKyAgICBib29sIHNo
b3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQgPSBmYWxzZTsKKyAgICBpZiAoYXV0byogY29kZUJsb2Nr
ID0gdGhpc09iamVjdC0+bV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpKQorICAgICAgICBzaG91bGRL
ZWVwSW5Db25zdHJhaW50U2V0IHw9IHZpc2l0Q29kZUJsb2NrRWRnZSh2aXNpdG9yLCBjb2RlQmxv
Y2spOworICAgIGlmIChhdXRvKiBjb2RlQmxvY2sgPSB0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0Zv
ckNvbnN0cnVjdC5nZXQoKSkKKyAgICAgICAgc2hvdWxkS2VlcEluQ29uc3RyYWludFNldCB8PSB2
aXNpdENvZGVCbG9ja0VkZ2UodmlzaXRvciwgY29kZUJsb2NrKTsKKyAgICBpZiAoc2hvdWxkS2Vl
cEluQ29uc3RyYWludFNldCkKKyAgICAgICAgdm0uaGVhcC5mdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZUFuZFNldC5vdXRwdXRDb25zdHJhaW50c1NldC5hZGQodGhpc09iamVjdCk7CiB9CiAKIERFRklO
RV9WSVNJVF9DSElMRFJFTihGdW5jdGlvbkV4ZWN1dGFibGUpOwogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBWaXNpdG9yPgordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHNJbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBWTSYgdm0gPSB2
aXNpdG9yLnZtKCk7CisgICAgYXV0byogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihjZWxsKTsKKyAgICBib29sIHNob3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQgPSBmYWxz
ZTsKKyAgICBpZiAoQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2tG
b3JDYWxsKCkpIHsKKyAgICAgICAgaWYgKCF2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCisg
ICAgICAgICAgICBzaG91bGRLZWVwSW5Db25zdHJhaW50U2V0IHw9IHJ1bkNvbnN0cmFpbnQoTm9M
b2NraW5nTmVjZXNzYXJ5LCB2aXNpdG9yLCBjb2RlQmxvY2spOworICAgIH0KKyAgICBpZiAoQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSkg
eworICAgICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrKSkKKyAgICAgICAgICAg
IHNob3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQgfD0gcnVuQ29uc3RyYWludChOb0xvY2tpbmdOZWNl
c3NhcnksIHZpc2l0b3IsIGNvZGVCbG9jayk7CisgICAgfQorICAgIGlmICghc2hvdWxkS2VlcElu
Q29uc3RyYWludFNldCkKKyAgICAgICAgdm0uaGVhcC5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFu
ZFNldC5vdXRwdXRDb25zdHJhaW50c1NldC5yZW1vdmUoZXhlY3V0YWJsZSk7Cit9CisKK0RFRklO
RV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlOVFMoRnVuY3Rpb25FeGVjdXRhYmxlKTsKKwogRnVuY3Rp
b25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogICAgIGNv
bnN0IElkZW50aWZpZXImIG5hbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgCiAgICAgSlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVy
cmlkZUxpbmVOdW1iZXIsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFy
YW1ldGVyc0VuZFBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCAwYTkxMmFlNWVmNzJkMDE1OGViZDVjZWRjZTU2
MjRiNjE1MTkyYWJlLi4zN2UwYzVkYjYxYWNhNjQyZTVlZmRmNjg2MTJmMDIzMWM0NThmZmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKQEAgLTY5LDM0
ICs2OCwzMSBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0YWJsZSB7CiAgICAgLy8gUmV0dXJucyBlaXRoZXIgY2FsbCBvciBjb25zdHJ1Y3QgYnl0
ZWNvZGUuIFRoaXMgY2FuIGJlIGFwcHJvcHJpYXRlCiAgICAgLy8gZm9yIGFuc3dlcmluZyBxdWVz
dGlvbnMgdGhhdCB0aGF0IGRvbid0IHZhcnkgYmV0d2VlbiBjYWxsIGFuZCBjb25zdHJ1Y3QgLS0K
ICAgICAvLyBmb3IgZXhhbXBsZSwgYXJndW1lbnRzUmVnaXN0ZXIoKS4KLSAgICBGdW5jdGlvbkNv
ZGVCbG9jayogZWl0aGVyQ29kZUJsb2NrKCkKKyAgICBGdW5jdGlvbkNvZGVCbG9jayogZWl0aGVy
Q29kZUJsb2NrKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2UqIGVkZ2U7Ci0gICAgICAgIGlmIChtX2NvZGVCbG9ja0ZvckNhbGwpCi0gICAgICAgICAgICBl
ZGdlID0gbV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBlZGdlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCk7Ci0gICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
Ojp1bndyYXAoZWRnZSkpOworICAgICAgICBpZiAoYXV0byogcmVzdWx0ID0gY29kZUJsb2NrRm9y
Q2FsbCgpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIGNvZGVC
bG9ja0ZvckNvbnN0cnVjdCgpOwogICAgIH0KICAgICAgICAgCiAgICAgYm9vbCBpc0dlbmVyYXRl
ZEZvckNhbGwoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEhbV9jb2RlQmxvY2tGb3JD
YWxsOworICAgICAgICByZXR1cm4gISFjb2RlQmxvY2tGb3JDYWxsKCk7CiAgICAgfQogCi0gICAg
RnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9ja0ZvckNhbGwoKQorICAgIEZ1bmN0aW9uQ29kZUJs
b2NrKiBjb2RlQmxvY2tGb3JDYWxsKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1
bndyYXAobV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihtX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCkpOwogICAg
IH0KIAogICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuICEhbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CisgICAgICAgIHJldHVybiAh
IWNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpOwogICAgIH0KIAotICAgIEZ1bmN0aW9uQ29kZUJsb2Nr
KiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKQorICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxGdW5jdGlvbkNvZGVCbG9jayo+KEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnVud3JhcCht
X2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9j
YXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4obV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCkpOwog
ICAgIH0KICAgICAgICAgCiAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCkBAIC0xMjIsNiArMTE4LDggQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICByZXR1cm4gYmFzZWxp
bmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgfQogCisgICAgRnVuY3Rpb25Db2RlQmxvY2sqIHJl
cGxhY2VDb2RlQmxvY2tXaXRoKFZNJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgQ29kZUJsb2Nr
Kik7CisKICAgICBSZWZQdHI8VHlwZVNldD4gcmV0dXJuU3RhdGVtZW50VHlwZVNldCgpIAogICAg
IHsKICAgICAgICAgUmFyZURhdGEmIHJhcmVEYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKQEAgLTE2
Miw2ICsxNjAsNyBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2Ny
aXB0RXhlY3V0YWJsZSB7CiAgICAgU291cmNlQ29kZSBjbGFzc1NvdXJjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jbGFzc1NvdXJjZSgpOyB9CiAKICAgICBERUNMQVJF
X1ZJU0lUX0NISUxEUkVOOworICAgIERFQ0xBUkVfVklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTOwog
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCiAgICAgewogICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKEZ1bmN0
aW9uRXhlY3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKQEAgLTMzMSw4ICsz
MzAsOCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0YWJsZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwogICAg
IFdyaXRlQmFycmllcjxTY3JpcHRFeGVjdXRhYmxlPiBtX3RvcExldmVsRXhlY3V0YWJsZTsKICAg
ICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fdW5saW5rZWRFeGVj
dXRhYmxlOwotICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX2Nv
ZGVCbG9ja0ZvckNhbGw7Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2U+IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0OworICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+
IG1fY29kZUJsb2NrRm9yQ2FsbDsKKyAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVC
bG9ja0ZvckNvbnN0cnVjdDsKICAgICBJbmZlcnJlZFZhbHVlPEpTRnVuY3Rpb24+IG1fc2luZ2xl
dG9uOwogICAgIEJveDxJbmxpbmVXYXRjaHBvaW50U2V0PiBtX3BvbHlQcm90b1dhdGNocG9pbnQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25F
eGVjdXRhYmxlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25FeGVjdXRhYmxlSW5saW5lcy5oCmluZGV4IGM5YTBiMTIyNDA0MzMyOTcxYTE2YzI4YTZkMTVm
NTRlZjNmNTBkOGMuLjQ3M2ZmYzMwY2Y5OWI5OTJlNmZiMGZmMzZjMTA1NmZlMzk3MmQxMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4
ZWN1dGFibGVJbmxpbmVzLmgKQEAgLTMzLDkgKzMzLDI1IEBAIG5hbWVzcGFjZSBKU0MgewogaW5s
aW5lIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYg
dm0pCiB7CiAgICAgbV9zaW5nbGV0b24uZmluYWxpemVVbmNvbmRpdGlvbmFsbHkodm0pOworICAg
IGZpbmFsaXplQ29kZUJsb2NrRWRnZSh2bSwgbV9jb2RlQmxvY2tGb3JDYWxsKTsKKyAgICBmaW5h
bGl6ZUNvZGVCbG9ja0VkZ2Uodm0sIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0KTsKKyAgICB2bS5o
ZWFwLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0Lm91dHB1dENvbnN0cmFpbnRzU2V0LnJl
bW92ZSh0aGlzKTsKIH0KIAotSlNTdHJpbmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK2lubGluZSBGdW5jdGlvbkNvZGVCbG9jayog
RnVuY3Rpb25FeGVjdXRhYmxlOjpyZXBsYWNlQ29kZUJsb2NrV2l0aChWTSYgdm0sIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCwgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2spCit7CisgICAgaWYg
KGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIG9sZENv
ZGVCbG9jayA9IGNvZGVCbG9ja0ZvckNhbGwoKTsKKyAgICAgICAgbV9jb2RlQmxvY2tGb3JDYWxs
LnNldCh2bSwgdGhpcywgbmV3Q29kZUJsb2NrKTsKKyAgICAgICAgcmV0dXJuIG9sZENvZGVCbG9j
azsKKyAgICB9CisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgRnVu
Y3Rpb25Db2RlQmxvY2sqIG9sZENvZGVCbG9jayA9IGNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpOwor
ICAgIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LnNldCh2bSwgdGhpcywgbmV3Q29kZUJsb2NrKTsK
KyAgICByZXR1cm4gb2xkQ29kZUJsb2NrOworfQorCitpbmxpbmUgSlNTdHJpbmcqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBSYXJlRGF0YSYgcmFyZURhdGEgPSBlbnN1cmVSYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURh
dGEubV9hc1N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dsb2JhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xv
YmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggNzVlODRiMzhmZjcyN2IzMmM4ZWIwMDExNmEwYjFkMGFk
ODQwYmZlZC4uZDIxYTMzZmQ0ZDIyOWQyZjI5NTBhZjBhMjE5NjQ5Mzk2ZWY5NmExMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5jcHAK
QEAgLTI2LDEwICsyNiw1OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdsb2Jh
bEV4ZWN1dGFibGUuaCIKIAorI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZv
IEdsb2JhbEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkdsb2JhbEV4ZWN1dGFibGUiX3MsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2xvYmFsRXhl
Y3V0YWJsZSkgfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgR2xvYmFsRXhl
Y3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8R2xvYmFsRXhlY3V0YWJsZSo+KGNl
bGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoZXhlY3V0YWJsZSwgaW5mbygpKTsK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGV4ZWN1dGFibGUsIHZpc2l0b3IpOworICAgIHZpc2l0
b3IuYXBwZW5kKGV4ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxvY2spOworCisgICAgaWYgKGF1
dG8qIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9jaygpKSB7CisgICAgICAgIGlmICgh
dmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2spKQorICAgICAgICAgICAgSGVhcDo6U2NyaXB0RXhl
Y3V0YWJsZVNwYWNlQW5kU2V0OjpmaW5hbGl6ZXJTZXRGb3IoKmV4ZWN1dGFibGUtPnN1YnNwYWNl
KCkpLmFkZChleGVjdXRhYmxlKTsKKyAgICAgICAgaWYgKHZpc2l0Q29kZUJsb2NrRWRnZSh2aXNp
dG9yLCBjb2RlQmxvY2spKQorICAgICAgICAgICAgSGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNl
QW5kU2V0OjpvdXRwdXRDb25zdHJhaW50c1NldEZvcigqZXhlY3V0YWJsZS0+c3Vic3BhY2UoKSku
YWRkKGV4ZWN1dGFibGUpOworICAgIH0KK30KKworREVGSU5FX1ZJU0lUX0NISUxEUkVOKEdsb2Jh
bEV4ZWN1dGFibGUpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgordm9pZCBHbG9iYWxF
eGVjdXRhYmxlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogZXhlY3V0YWJsZSA9IGpzQ2FzdDxHbG9iYWxFeGVj
dXRhYmxlKj4oY2VsbCk7CisgICAgaWYgKENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJs
ZS0+Y29kZUJsb2NrKCkpIHsKKyAgICAgICAgaWYgKCF2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9j
aykpIHsKKyAgICAgICAgICAgIGlmIChydW5Db25zdHJhaW50KE5vTG9ja2luZ05lY2Vzc2FyeSwg
dmlzaXRvciwgY29kZUJsb2NrKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisgICAgSGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0OjpvdXRwdXRDb25z
dHJhaW50c1NldEZvcigqZXhlY3V0YWJsZS0+c3Vic3BhY2UoKSkucmVtb3ZlKGV4ZWN1dGFibGUp
OworfQorCitERUZJTkVfVklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTKEdsb2JhbEV4ZWN1dGFibGUp
OworCitDb2RlQmxvY2sqIEdsb2JhbEV4ZWN1dGFibGU6OnJlcGxhY2VDb2RlQmxvY2tXaXRoKFZN
JiB2bSwgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2spCit7CisgICAgQ29kZUJsb2NrKiBvbGRDb2Rl
QmxvY2sgPSBjb2RlQmxvY2soKTsKKyAgICBtX2NvZGVCbG9jay5zZXQodm0sIHRoaXMsIG5ld0Nv
ZGVCbG9jayk7CisgICAgcmV0dXJuIG9sZENvZGVCbG9jazsKK30KKwordm9pZCBHbG9iYWxFeGVj
dXRhYmxlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCit7CisgICAgZmluYWxpemVD
b2RlQmxvY2tFZGdlKHZtLCBtX2NvZGVCbG9jayk7CisgICAgSGVhcDo6U2NyaXB0RXhlY3V0YWJs
ZVNwYWNlQW5kU2V0OjpvdXRwdXRDb25zdHJhaW50c1NldEZvcigqc3Vic3BhY2UoKSkucmVtb3Zl
KHRoaXMpOworICAgIEhlYXA6OlNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6ZmluYWxpemVy
U2V0Rm9yKCpzdWJzcGFjZSgpKS5yZW1vdmUodGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0
YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5o
CmluZGV4IDkyNzRjOWNkM2Q2ZDIxMmJhOGI2NTZiYTNjODIwMzA1MTU1NjBiNTQuLjNkMWRlOWUw
YWNmNTg2YjUxMmMxZmNmZTM3ZmJkOWUxYmYxNGM5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0YWJsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ4LDEy
ICs0NywzMiBAQCBjbGFzcyBHbG9iYWxFeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFi
bGUgewogICAgICAgICBBU1NFUlQoZW5kQ29sdW1uICE9IFVJTlRfTUFYKTsKICAgICB9CiAKKyAg
ICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOworICAgIERFQ0xBUkVfVklTSVRfT1VUUFVUX0NPTlNU
UkFJTlRTOworCisgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOworCiBwcm90
ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAgICAgR2xvYmFsRXhl
Y3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVy
aXZlZENvbnRleHRUeXBlLCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIElu
dHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIDogQmFzZShzdHJ1Y3R1cmUsIHZtLCBzb3VyY2VD
b2RlLCBpc0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVMZXhpY2FsRmVhdHVyZSA6IE5vTGV4
aWNhbEZlYXR1cmVzLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4
dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIGludHJpbnNpYykK
ICAgICB7CiAgICAgfQogCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLmdldCgpOworICAgIH0KKworICAgIFVubGlua2Vk
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV91bmxpbmtlZENvZGVCbG9jay5nZXQoKTsKKyAgICB9CisKKyAgICBDb2RlQmxvY2sqIHJl
cGxhY2VDb2RlQmxvY2tXaXRoKFZNJiwgQ29kZUJsb2NrKik7CisKKyAgICBXcml0ZUJhcnJpZXI8
Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKKyAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRDb2RlQmxv
Y2s+IG1fdW5saW5rZWRDb2RlQmxvY2s7CiAgICAgaW50IG1fbGFzdExpbmUgeyAtMSB9OwogICAg
IHVuc2lnbmVkIG1fZW5kQ29sdW1uIHsgVUlOVF9NQVggfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmlu
ZGV4IDViYzU4ODJiMDAyYzI4NTY2NTM1MjZjNDA0ZGQ5Y2YxNTQ0NTY1YzYuLmU5ZTFkZTM1YTA1
YjNiNGMzMzg2NzdmNWM1NjgzMTkyMzhmODg5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC02NSw3
ICs2NSw3IEBAIGlubGluZSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGVJbXBsKEpTR2xvYmFsT2JqZWN0CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldCh2
bSwgZXhlY3V0YWJsZSwgdW5saW5rZWRFdmFsQ29kZSk7CisgICAgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZENvZGVCbG9jay5zZXQodm0sIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUpOwogCiAg
ICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCmluZGV4IGEzNzZhZjVlZWEwZGU2YjUxNzBjNGZiNDQ3MzczMGQyNTgz
MzFjNTIuLmM5YjcxNjA3MGJiZmQwYWEwYjRiN2NjNGVlMmFiODc1YmU5ZjU0ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJz
LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpT
Qm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAppbmRleCBhYjdiZWNkOWM2
N2EwOGMyZmUyNThmN2RiOTEwNTRmMmJhZDc5ZDExLi4wODEwZTFkMmQxNjUzMGQwZDg2MjU0ZDAw
YzM0NzVmNmUxYTQ1OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFN5bmNocm9ub3VzbmVzcyBKU01v
ZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNj
cmlwCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgU3luY2hyb25vdXNuZXNzOjpTeW5j
KTsKICAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLnNldCh2bSwgdGhpcywgZXhlY3V0YWJs
ZSk7CiAKLSAgICByZXR1cm4gZXhlY3V0YWJsZS0+dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKCktPmlzQXN5bmMoKSA/IFN5bmNocm9ub3VzbmVzczo6QXN5bmMgOiBTeW5jaHJvbm91c25l
c3M6OlN5bmM7CisgICAgcmV0dXJuIGV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrKCktPmlz
QXN5bmMoKSA/IFN5bmNocm9ub3VzbmVzczo6QXN5bmMgOiBTeW5jaHJvbm91c25lc3M6OlN5bmM7
CiB9CiAKIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpAQCAtMjA5LDcgKzIwOSw3
IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIE1vZHVsCiAgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBz
dGVwIDE2LWEtaXYuCiAgICAgLy8gSW5pdGlhbGl6ZSBoZWFwIGFsbG9jYXRlZCBmdW5jdGlvbiBk
ZWNsYXJhdGlvbnMuCiAgICAgLy8gVGhleSBjYW4gYmUgY2FsbGVkIGJlZm9yZSB0aGUgYm9keSBv
ZiB0aGUgbW9kdWxlIGlzIGV4ZWN1dGVkIHVuZGVyIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KLSAg
ICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpOwor
ICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBt
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2soKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMCwgbnVtYmVyT2ZGdW5jdGlvbnMgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVy
T2ZGdW5jdGlvbkRlY2xzKCk7IGkgPCBudW1iZXJPZkZ1bmN0aW9uczsgKytpKSB7CiAgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA9
IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CiAgICAgICAgIFN5bWJvbFRhYmxl
RW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LT5uYW1lKCkuaW1wbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNwcAppbmRleCAyNDdmYWE2NWViY2U2ZWEz
OTQ3NmNjMjZlZjRkMmU1MjZkNTllNTY4Li44MTJjMWM3NWE1NTJkNWI2YzkyZWNkNjNlNDQ5NTE1
MWQ2NGJhNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCkBAIC02Miw3ICs2Miw3IEBAIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGV4
ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLnNldChnbG9iYWxPYmpl
Y3QtPnZtKCksIGV4ZWN1dGFibGUsIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGUpOworICAgIGV4
ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxvY2suc2V0KGdsb2JhbE9iamVjdC0+dm0oKSwgZXhl
Y3V0YWJsZSwgdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZSk7CiAKICAgICBleGVjdXRhYmxlLT5t
X21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuc2V0KGdsb2JhbE9iamVjdC0+dm0oKSwgZXhl
Y3V0YWJsZSwganNDYXN0PFN5bWJvbFRhYmxlKj4odW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZS0+
Y29uc3RhbnRSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIodW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZS0+bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQoKSkp
LmdldCgpKS0+Y2xvbmVTY29wZVBhcnQoZ2xvYmFsT2JqZWN0LT52bSgpKSk7CiAKQEAgLTg1LDkg
Kzg1LDcgQEAgdm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwo
SlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spOwogICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJs
ZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKTsKICAgICBpZiAoVGVtcGxhdGVPYmplY3RNYXAqIG1hcCA9IHRoaXNPYmplY3QtPm1fdGVt
cGxhdGVPYmplY3RNYXAuZ2V0KCkpIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRoaXNPYmpl
Y3QtPmNlbGxMb2NrKCkgfTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICptYXApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUuaAppbmRleCA5MjYzNWIzMjIxYjJjNTQxNGFjYTc2ZDE4Yjk4ZThiMWFjOGRlYTE1Li4z
OWMyYWE5NGIyY2U0OTcwYjc1Y2U4MGFiYzk1MjljNjI4OTM5Zjg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgK
QEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVkZSAiR2xvYmFsRXhlY3V0YWJsZS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTQ2LDkgKzQ1LDE0IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlIGZpbmFsIDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUgewogCiAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKIAotICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9j
aygpCisgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnVud3JhcChtX21vZHVsZVByb2dyYW1Db2RlQmxvY2su
Z2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKj4oQmFzZTo6Y29kZUJsb2NrKCkpOworICAgIH0KKworICAgIFVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2soKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihCYXNl
Ojp1bmxpbmtlZENvZGVCbG9jaygpKTsKICAgICB9CiAKICAgICBSZWY8SklUQ29kZT4gZ2VuZXJh
dGVkSklUQ29kZSgpCkBAIC02Myw3ICs2Nyw2IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlIGZpbmFsIDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9JTkZP
OwogCi0gICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ay5nZXQoKTsgfQogICAgIGJvb2wgaXNBc3luYygpIGNvbnN0IHsgcmV0dXJuIGZlYXR1cmVzKCkg
JiBBd2FpdEZlYXR1cmU7IH0KIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5
bWJvbFRhYmxlKCkgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgp
OyB9CkBAIC03OCw5ICs4MSw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFs
IDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9WSVNJVF9DSElMRFJF
TjsKIAotICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IG1f
dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogICAgIFdyaXRlQmFycmllcjxTeW1ib2xU
YWJsZT4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlOwotICAgIFdyaXRlQmFycmllcjxF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRlT2JqZWN0TWFwPiBtX3RlbXBsYXRlT2JqZWN0TWFwOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4
ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1
dGFibGUuY3BwCmluZGV4IDczMjlmZTI3MDE4Njg0YWIwNWM2YTQ3NzZmYWQyOTZlNTgyODlkNmMu
LmNlODI0MmY5ODM1ZmI2M2NhYmZhMTQ3N2RlOWEyMjNmYjBhZjk4MTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKQEAgLTE1
MCw4ICsxNTAsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9i
YWxQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIH0KICAgICB9CiAK
LQotICAgIG1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLnNldCh2bSwgdGhpcywgdW5saW5rZWRD
b2RlQmxvY2spOworICAgIG1fdW5saW5rZWRDb2RlQmxvY2suc2V0KHZtLCB0aGlzLCB1bmxpbmtl
ZENvZGVCbG9jayk7CiAKICAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciBvcHRpbWl6ZXIo
dm0sIGdsb2JhbE9iamVjdCk7CiAKQEAgLTIxNiw4ICsyMTUsNiBAQCB2b2lkIFByb2dyYW1FeGVj
dXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1
dGFibGUqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
LSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9j
ayk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm9ncmFtQ29kZUJsb2NrKTsK
ICAgICBpZiAoVGVtcGxhdGVPYmplY3RNYXAqIG1hcCA9IHRoaXNPYmplY3QtPm1fdGVtcGxhdGVP
YmplY3RNYXAuZ2V0KCkpIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRoaXNPYmplY3QtPmNl
bGxMb2NrKCkgfTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICptYXApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCA1MTM0
OTkwMjA0MDc4MTNjNTllMzI4OGExOGRmMjliYzExMWJmZWMyLi40Mzk0ZTdmZmNiNjhiMjE1MTdj
ODljY2FiMjhhODM1NjVmOTJhY2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVkZSAi
R2xvYmFsRXhlY3V0YWJsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTU2LDkgKzU1LDE0IEBA
IGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUg
ewogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAgIFByb2dyYW1Db2Rl
QmxvY2sqIGNvZGVCbG9jaygpCisgICAgUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UHJvZ3JhbUNvZGVCbG9jayo+
KEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnVud3JhcChtX3Byb2dyYW1Db2RlQmxvY2suZ2V0
KCkpKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4oQmFz
ZTo6Y29kZUJsb2NrKCkpOworICAgIH0KKworICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayog
dW5saW5rZWRDb2RlQmxvY2soKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqPihCYXNlOjp1bmxpbmtlZENvZGVCbG9jaygp
KTsKICAgICB9CiAKICAgICBSZWY8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCkBAIC04Myw4
ICs4Nyw2IEBAIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEdsb2JhbEV4
ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKIAotICAgIFdyaXRlQmFy
cmllcjxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+IG1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
OwotICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX3Byb2dyYW1D
b2RlQmxvY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRlT2JqZWN0TWFwPiBtX3RlbXBs
YXRlT2JqZWN0TWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAppbmRleCBjNmE5ZWFiNjcxNGNlNDJjNDEwODdiZGIwOGZj
OTIxNzRhYzhlY2JmLi5iOTQyMDRlMWNhNGNjODdlNzUyNWQyZjVhZWQwN2FiMmI4YjczODU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxl
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAi
RXZhbENvZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSAiRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkdsb2JhbEV4ZWN1dGFi
bGUuaCIKICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgpA
QCAtODYsMjAgKzg3LDIwIEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6Y2xlYXJDb2RlKElzb0Nl
bGxTZXQmIGNsZWFyYWJsZUNvZGVTZXQpCiAgICAgfQogICAgIGNhc2UgRXZhbEV4ZWN1dGFibGVU
eXBlOiB7CiAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8
RXZhbEV4ZWN1dGFibGUqPih0aGlzKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV9ldmFsQ29kZUJs
b2NrLmNsZWFyKCk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2Nr
LmNsZWFyKCk7CisgICAgICAgIGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrLmNsZWFyKCk7CisgICAg
ICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxvY2suY2xlYXIoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGNhc2UgUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOiB7CiAgICAgICAgIFBy
b2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFi
bGUqPih0aGlzKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrLmNsZWFy
KCk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmNsZWFy
KCk7CisgICAgICAgIGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrLmNsZWFyKCk7CisgICAgICAgIGV4
ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxvY2suY2xlYXIoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOiB7CiAgICAgICAgIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8TW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9n
cmFtQ29kZUJsb2NrLmNsZWFyKCk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7CisgICAgICAgIGV4ZWN1dGFibGUtPm1fY29kZUJs
b2NrLmNsZWFyKCk7CisgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxvY2suY2xl
YXIoKTsKICAgICAgICAgZXhlY3V0YWJsZS0+bV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxl
LmNsZWFyKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEwOCw3ICsxMDksNyBAQCB2b2lk
IFNjcmlwdEV4ZWN1dGFibGU6OmNsZWFyQ29kZShJc29DZWxsU2V0JiBjbGVhcmFibGVDb2RlU2V0
KQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBBU1NFUlQoJkhlYXA6OlNwYWNlQW5kU2V0
OjpzZXRGb3IoKnN1YnNwYWNlKCkpID09ICZjbGVhcmFibGVDb2RlU2V0KTsKKyAgICBBU1NFUlQo
JkhlYXA6OlNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6Y2xlYXJhYmxlQ29kZVNldEZvcigq
c3Vic3BhY2UoKSkgPT0gJmNsZWFyYWJsZUNvZGVTZXQpOwogICAgIGNsZWFyYWJsZUNvZGVTZXQu
cmVtb3ZlKHRoaXMpOwogfQogCkBAIC0xMzEsOCArMTMyLDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRh
YmxlOjppbnN0YWxsQ29kZShWTSYgdm0sIENvZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9jaywgQ29k
ZVR5cGUKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKICAg
ICAgICAgCi0gICAgICAgIG9sZENvZGVCbG9jayA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6
OmRlYWN0aXZhdGVBbmRVbndyYXAoZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrLmdldCgp
KTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrLnNldE1heUJlTnVsbCh2
bSwgdGhpcywgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6d3JhcEFuZEFjdGl2YXRlKGNvZGVC
bG9jaykpOworICAgICAgICBvbGRDb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5yZXBsYWNlQ29kZUJs
b2NrV2l0aCh2bSwgY29kZUJsb2NrKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xNDIs
OCArMTQyLDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShWTSYgdm0sIENv
ZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9jaywgQ29kZVR5cGUKIAogICAgICAgICBBU1NFUlQoa2lu
ZCA9PSBDb2RlRm9yQ2FsbCk7CiAKLSAgICAgICAgb2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZUFuZFVud3JhcChleGVjdXRhYmxlLT5tX21vZHVsZVBy
b2dyYW1Db2RlQmxvY2suZ2V0KCkpOwotICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZVByb2dy
YW1Db2RlQmxvY2suc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlOjp3cmFwQW5kQWN0aXZhdGUoY29kZUJsb2NrKSk7CisgICAgICAgIG9sZENvZGVCbG9jayA9
IGV4ZWN1dGFibGUtPnJlcGxhY2VDb2RlQmxvY2tXaXRoKHZtLCBjb2RlQmxvY2spOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKQEAgLTE1Myw4ICsxNTIsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFi
bGU6Omluc3RhbGxDb2RlKFZNJiB2bSwgQ29kZUJsb2NrKiBnZW5lcmljQ29kZUJsb2NrLCBDb2Rl
VHlwZQogICAgICAgICAKICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOwogICAg
ICAgICAKLSAgICAgICAgb2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6
ZGVhY3RpdmF0ZUFuZFVud3JhcChleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2suZ2V0KCkpOwot
ICAgICAgICBleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2suc2V0TWF5QmVOdWxsKHZtLCB0aGlz
LCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5kQWN0aXZhdGUoY29kZUJsb2NrKSk7
CisgICAgICAgIG9sZENvZGVCbG9jayA9IGV4ZWN1dGFibGUtPnJlcGxhY2VDb2RlQmxvY2tXaXRo
KHZtLCBjb2RlQmxvY2spOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMTYy
LDE2ICsxNjAsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2bSwg
Q29kZUJsb2NrKiBnZW5lcmljQ29kZUJsb2NrLCBDb2RlVHlwZQogICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyk7
CiAgICAgICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxGdW5j
dGlvbkNvZGVCbG9jayo+KGdlbmVyaWNDb2RlQmxvY2spOwogICAgICAgICAKLSAgICAgICAgc3dp
dGNoIChraW5kKSB7Ci0gICAgICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgICAgICBvbGRD
b2RlQmxvY2sgPSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFjdGl2YXRlQW5kVW53cmFw
KGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ2FsbC5nZXQoKSk7Ci0gICAgICAgICAgICBleGVj
dXRhYmxlLT5tX2NvZGVCbG9ja0ZvckNhbGwuc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5kQWN0aXZhdGUoY29kZUJsb2NrKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICAgICAg
b2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZUFuZFVu
d3JhcChleGVjdXRhYmxlLT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKSk7Ci0gICAgICAg
ICAgICBleGVjdXRhYmxlLT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5zZXRNYXlCZU51bGwodm0s
IHRoaXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3RpdmF0ZShjb2RlQmxv
Y2spKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIG9sZENvZGVCbG9j
ayA9IGV4ZWN1dGFibGUtPnJlcGxhY2VDb2RlQmxvY2tXaXRoKHZtLCBraW5kLCBjb2RlQmxvY2sp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpAQCAtMTg3LDcgKzE3Niw3IEBAIHZvaWQg
U2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUoVk0mIHZtLCBDb2RlQmxvY2sqIGdlbmVyaWND
b2RlQmxvY2ssIENvZGVUeXBlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGF1dG8mIGNs
ZWFyYWJsZUNvZGVTZXQgPSBIZWFwOjpTcGFjZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgpKTsK
KyAgICBhdXRvJiBjbGVhcmFibGVDb2RlU2V0ID0gSGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNl
QW5kU2V0OjpjbGVhcmFibGVDb2RlU2V0Rm9yKCpzdWJzcGFjZSgpKTsKICAgICBpZiAoaGFzQ2xl
YXJhYmxlQ29kZSh2bSkpCiAgICAgICAgIGNsZWFyYWJsZUNvZGVTZXQuYWRkKHRoaXMpOwogICAg
IGVsc2UKQEAgLTIyNSwyMyArMjE0LDIzIEBAIGJvb2wgU2NyaXB0RXhlY3V0YWJsZTo6aGFzQ2xl
YXJhYmxlQ29kZShWTSYgdm0pIGNvbnN0CiAKICAgICBpZiAoc3RydWN0dXJlKHZtKS0+Y2xhc3NJ
bmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpIHsKICAgICAgICAgYXV0byogZXhl
Y3V0YWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwot
ICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2tGb3JDYWxsIHx8IGV4ZWN1dGFibGUt
Pm1fY29kZUJsb2NrRm9yQ29uc3RydWN0KQorICAgICAgICBpZiAoZXhlY3V0YWJsZS0+ZWl0aGVy
Q29kZUJsb2NrKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIH0gZWxzZSBpZiAo
c3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCkgPT0gRXZhbEV4ZWN1dGFibGU6OmluZm8oKSkgewog
ICAgICAgICBhdXRvKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRXZhbEV4ZWN1dGFi
bGUqPih0aGlzKTsKLSAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1fZXZhbENvZGVCbG9jayB8fCBl
eGVjdXRhYmxlLT5tX3VubGlua2VkRXZhbENvZGVCbG9jaykKKyAgICAgICAgaWYgKGV4ZWN1dGFi
bGUtPm1fY29kZUJsb2NrIHx8IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxvY2spCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIH0gZWxzZSBpZiAoc3RydWN0dXJlKHZtKS0+Y2xh
c3NJbmZvKCkgPT0gUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgewogICAgICAgICBhdXRvKiBl
eGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsK
LSAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNvZGVCbG9jayB8fCBleGVjdXRhYmxl
LT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKKyAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1f
Y29kZUJsb2NrIHx8IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxvY2spCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIH0gZWxzZSBpZiAoc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZv
KCkgPT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgewogICAgICAgICBhdXRvKiBl
eGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0
aGlzKTsKLSAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jawot
ICAgICAgICAgICAgfHwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sKKyAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrCisgICAgICAgICAgICB8fCBl
eGVjdXRhYmxlLT5tX3VubGlua2VkQ29kZUJsb2NrCiAgICAgICAgICAgICB8fCBleGVjdXRhYmxl
LT5tX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC0yNjEsMjUgKzI1MCwyNSBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFi
bGU6Om5ld0NvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTRnVuYwog
ICAgIGlmIChjbGFzc0luZm8odm0pID09IEV2YWxFeGVjdXRhYmxlOjppbmZvKCkpIHsKICAgICAg
ICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPih0
aGlzKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2spOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2spOwogICAgICAgICBSRUxF
QVNFX0FTU0VSVCghZnVuY3Rpb24pOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgRXZhbENvZGVCbG9jazo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5t
X3VubGlua2VkRXZhbENvZGVCbG9jay5nZXQoKSwgc2NvcGUpKTsKKyAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEV2YWxDb2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJs
ZSwgZXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2soKSwgc2NvcGUpKTsKICAgICB9CiAKICAg
ICBpZiAoY2xhc3NJbmZvKHZtKSA9PSBQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CiAgICAg
ICAgIFByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PFByb2dyYW1FeGVjdXRh
YmxlKj4odGhpcyk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwp
OwotICAgICAgICBSRUxFQVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2Nr
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWN1dGFibGUtPm1fY29kZUJsb2NrKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIFByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwg
ZXhlY3V0YWJsZS0+bV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlKSk7Cisg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBQcm9ncmFtQ29kZUJsb2NrOjpj
cmVhdGUodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrKCksIHNj
b3BlKSk7CiAgICAgfQogCiAgICAgaWYgKGNsYXNzSW5mbyh2bSkgPT0gTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGU6OmluZm8oKSkgewogICAgICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOwogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIWV4ZWN1dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFleGVjdXRhYmxlLT5tX2NvZGVCbG9jayk7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFmdW5jdGlvbik7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFi
bGUtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpLCBzY29wZSkpOworICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
azo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9jaygp
LCBzY29wZSkpOwogICAgIH0KIAogICAgIFJFTEVBU0VfQVNTRVJUKGNsYXNzSW5mbyh2bSkgPT0g
RnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpOwpAQCAtNTM1LDQgKzUyNCw3OSBAQCB1bnNpZ25l
ZCBTY3JpcHRFeGVjdXRhYmxlOjplbmRDb2x1bW4oKSBjb25zdAogICAgIHJldHVybiAwOwogfQog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgorYm9vbCBTY3JpcHRFeGVjdXRhYmxlOjpydW5D
b25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWaXNpdG9yJiB2aXNp
dG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAg
ICBjb2RlQmxvY2stPnByb3BhZ2F0ZVRyYW5zaXRpb25zKGxvY2tlciwgdmlzaXRvcik7CisgICAg
Y29kZUJsb2NrLT5kZXRlcm1pbmVMaXZlbmVzcyhsb2NrZXIsIHZpc2l0b3IpOworICAgIHJldHVy
biAhdmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2spOworfQorCit0ZW1wbGF0ZSBib29sIFNjcmlw
dEV4ZWN1dGFibGU6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQWJz
dHJhY3RTbG90VmlzaXRvciYsIENvZGVCbG9jayopOwordGVtcGxhdGUgYm9vbCBTY3JpcHRFeGVj
dXRhYmxlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNp
dG9yJiwgQ29kZUJsb2NrKik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Citib29sIFNj
cmlwdEV4ZWN1dGFibGU6OnZpc2l0Q29kZUJsb2NrRWRnZShWaXNpdG9yJiB2aXNpdG9yLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworCisgICAgaWYgKGNvZGVC
bG9jay0+c2hvdWxkVmlzaXRTdHJvbmdseShsb2NrZXIsIHZpc2l0b3IpKQorICAgICAgICB2aXNp
dG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jayk7CisKKyAgICBpZiAoSklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkgeworICAgICAgICAvLyBJZiB3ZSBq
ZXR0aXNvbiBvdXJzZWx2ZXMgd2UnbGwgaW5zdGFsbCBvdXIgYWx0ZXJuYXRpdmUsIHNvIG1ha2Ug
c3VyZSB0aGF0IGl0CisgICAgICAgIC8vIHN1cnZpdmVzIEdDIGV2ZW4gaWYgd2UgZG9uJ3QuCisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKGNvZGVCbG9jay0+bV9hbHRlcm5hdGl2ZSk7CisgICAgfQor
CisgICAgLy8gTk9URTogVGhlcmUgYXJlIHR3byBzaWRlcyB0byB0aGlzIGNvbnN0cmFpbnQsIHdp
dGggZGlmZmVyZW50IHJlcXVpcmVtZW50cyBmb3IgY29ycmVjdG5lc3MuCisgICAgLy8gQmVjYXVz
ZSBldmVyeXRoaW5nIGlzIHVsdGltYXRlbHkgcHJvdGVjdGVkIHdpdGggd2VhayByZWZlcmVuY2Vz
IGFuZCBqZXR0aXNvbmluZywgaXQncworICAgIC8vIGFsd2F5cyAiT0siIHRvIGNsYWltIHRoYXQg
c29tZXRoaW5nIGlzIGRlYWQgcHJlbWF0dXJlbHkgYW5kIGl0J3MgIk9LIiB0byBrZWVwIHRoaW5n
cyBhbGl2ZS4KKyAgICAvLyBCdXQgYm90aCBjaG9pY2VzIGNvdWxkIGxlYWQgdG8gYmFkIHBlcmYg
LSBlaXRoZXIgcmVjb21wIGN5Y2xlcyBvciBsZWFrcy4KKyAgICAvLworICAgIC8vIERldGVybWlu
aW5nIENvZGVCbG9jayBsaXZlbmVzczogVGhpcyBwYXJ0IGlzIHRoZSBtb3N0IGNvbnNlcXVlbnRp
YWwuIFdlIHdhbnQgdG8ga2VlcCB0aGUKKyAgICAvLyBvdXRwdXQgY29uc3RyYWludCBhY3RpdmUg
c28gbG9uZyBhcyB3ZSB0aGluayB0aGF0IHdlIG1heSB5ZXQgcHJvdmUgdGhhdCB0aGUgQ29kZUJs
b2NrIGlzCisgICAgLy8gbGl2ZSBidXQgd2UgaGF2ZW4ndCBkb25lIGl0IHlldC4KKyAgICAvLwor
ICAgIC8vIE1hcmtpbmcgU3RydWN0dXJlcyBpZiBwcm9maXRhYmxlOiBJdCdzIGltcG9ydGFudCB0
aGF0IHdlIGRvIGEgcGFzcyBvZiB0aGlzLiBMb2dpY2FsbHksIHRoaXMKKyAgICAvLyBzZWVtcyBs
aWtlIGl0IGlzIGEgY29uc3RyYWludCBvZiBDb2RlQmxvY2suIEJ1dCB3ZSBoYXZlIGFsd2F5cyBm
aXJzdCBydW4gdGhpcyBhcyBhIHJlc3VsdAorICAgIC8vIG9mIHRoZSBlZGdlIGJlaW5nIG1hcmtl
ZCBldmVuIGJlZm9yZSB3ZSBkZXRlcm1pbmUgdGhlIGxpdmVuZXNzIG9mIHRoZSBDb2RlQmxvY2su
IFRoaXMKKyAgICAvLyBhbGxvd3MgYSBDb2RlQmxvY2sgdG8gbWFyayBpdHNlbGYgYnkgZmlyc3Qg
cHJvdmluZyB0aGF0IGFsbCBvZiB0aGUgU3RydWN0dXJlcyBpdCB3ZWFrbHkKKyAgICAvLyBkZXBl
bmRzIG9uIGNvdWxkIGJlIHN0cm9uZ2x5IG1hcmtlZC4gKFRoaXMgcGFydCBpcyBhbHNvIGNhbGxl
ZCBwcm9wYWdhdGVUcmFuc2l0aW9ucy4pCisgICAgLy8KKyAgICAvLyBBcyBhIHdlaXJkIGNhdmVh
dCwgd2Ugb25seSBmaXhwb2ludCB0aGUgY29uc3RyYWludHMgc28gbG9uZyBhcyB0aGUgQ29kZUJs
b2NrIGlzIG5vdCBsaXZlLgorICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSBtYXkgb3Zlcmxvb2sg
c3RydWN0dXJlIG1hcmtpbmcgb3Bwb3J0dW5pdGllcyBjcmVhdGVkIGJ5IG90aGVyIG1hcmtpbmcK
KyAgICAvLyB0aGF0IGhhcHBlbnMgYWZ0ZXIgdGhlIENvZGVCbG9jayBpcyBtYXJrZWQuIFRoaXMg
d2FzIGFuIGFjY2lkZW50YWwgcG9saWN5IGRlY2lzaW9uIGZyb20gYQorICAgIC8vIGxvbmcgdGlt
ZSBhZ28sIGJ1dCBpdCBpcyBwcm9iYWJseSBPSywgc2luY2UgaXQncyBvbmx5IHdvcnRod2hpbGUg
dG8ga2VlcCBmaXhwb2ludGluZyB0aGUKKyAgICAvLyBzdHJ1Y3R1cmUgbWFya2luZyBpZiB3ZSBz
dGlsbCBoYXZlIHVubWFya2VkIHN0cnVjdHVyZXMgYWZ0ZXIgdGhlIGZpcnN0IHJvdW5kLiBXZSBh
bG1vc3QKKyAgICAvLyBuZXZlciB3aWxsIGJlY2F1c2Ugd2Ugd2lsbCBtYXJrLWlmLXByb2ZpdGFi
bGUgYmFzZWQgb24gdGhlIG93bmluZyBnbG9iYWwgb2JqZWN0IGJlaW5nCisgICAgLy8gYWxyZWFk
eSBtYXJrZWQuIFdlIG1hcmsgaXQganVzdCBpbiBjYXNlIHRoYXQgaGFkbid0IGhhcHBlbmVkIHll
dC4gQW5kIGlmIHRoZSBDb2RlQmxvY2sgaXMKKyAgICAvLyBub3QgeWV0IG1hcmtlZCBiZWNhdXNl
IGl0IHdlYWtseSBkZXBlbmRzIG9uIGEgc3RydWN0dXJlIHRoYXQgd2UgZGlkIG5vdCB5ZXQgbWFy
aywgdGhlbiB3ZQorICAgIC8vIHdpbGwga2VlcCBmaXhwb2ludGluZyB1bnRpbCB0aGUgZW5kLgor
ICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7
CisgICAgcmV0dXJuIHJ1bkNvbnN0cmFpbnQobG9ja2VyLCB2aXNpdG9yLCBjb2RlQmxvY2spOwor
fQorCit0ZW1wbGF0ZSBib29sIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q29kZUJsb2NrRWRnZShB
YnN0cmFjdFNsb3RWaXNpdG9yJiwgQ29kZUJsb2NrKik7Cit0ZW1wbGF0ZSBib29sIFNjcmlwdEV4
ZWN1dGFibGU6OnZpc2l0Q29kZUJsb2NrRWRnZShTbG90VmlzaXRvciYsIENvZGVCbG9jayopOwor
Cit2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OmZpbmFsaXplQ29kZUJsb2NrRWRnZShWTSYgdm0sIFdy
aXRlQmFycmllcjxDb2RlQmxvY2s+JiBjb2RlQmxvY2tFZGdlKQoreworICAgIGF1dG8qIGNvZGVC
bG9jayA9IGNvZGVCbG9ja0VkZ2UuZ2V0KCk7CisgICAgaWYgKCFjb2RlQmxvY2spCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghdm0uaGVhcC5pc01hcmtlZChjb2RlQmxvY2spKSB7CisgICAg
ICAgIGlmIChjb2RlQmxvY2stPnNob3VsZEpldHRpc29uRHVlVG9XZWFrUmVmZXJlbmNlKHZtKSkK
KyAgICAgICAgICAgIGNvZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9X
ZWFrUmVmZXJlbmNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZUJsb2NrLT5qZXR0
aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb09sZEFnZSk7CisgICAgICAgIGlmIChjb2RlQmxv
Y2sgPT0gY29kZUJsb2NrRWRnZS5nZXQoKSkKKyAgICAgICAgICAgIGNvZGVCbG9ja0VkZ2UuY2xl
YXIoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCmluZGV4IDc1ZGFlZTRiOGYyOGI1
YmMxMGUwZTYxYzIzNjkwZTY0OTIwNzUxODMuLmMxYmEzMzc1MWNjNDRmNTYyZTgyYjMyZGU2YjJi
Mzk2NDIxNWYwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3Jp
cHRFeGVjdXRhYmxlLmgKQEAgLTEzOSw2ICsxMzksMTIgQEAgY2xhc3MgU2NyaXB0RXhlY3V0YWJs
ZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAKICAgICBzdGF0aWMgVGVtcGxhdGVPYmplY3RN
YXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFwSW1wbChzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVP
YmplY3RNYXA+JiBkZXN0KTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CisgICAg
c3RhdGljIGJvb2wgcnVuQ29uc3RyYWludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWaXNp
dG9yJiwgQ29kZUJsb2NrKik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KKyAgICBz
dGF0aWMgYm9vbCB2aXNpdENvZGVCbG9ja0VkZ2UoVmlzaXRvciYsIENvZGVCbG9jayopOworICAg
IHZvaWQgZmluYWxpemVDb2RlQmxvY2tFZGdlKFZNJiwgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4m
KTsKKwogICAgIFNvdXJjZUNvZGUgbV9zb3VyY2U7CiAgICAgSW50cmluc2ljIG1faW50cmluc2lj
IHsgTm9JbnRyaW5zaWMgfTsKICAgICBib29sIG1fZGlkVHJ5VG9FbnRlckluTG9vcCB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggZTMyZGNiMGFkMzRiMjNi
Y2RhMjQ3MWEwM2VlOTJjYjUyMzMzODIzOC4uM2JiNDU4ZWU4ZTM2ZDZiNGUyNjVmZGI5YzE5M2Ey
ZWRkMjJkZTA4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDcsNyAr
NDcsNiBAQAogI2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKICNpbmNsdWRlICJFdmFsQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZS5oIgogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkZpbGVCYXNl
ZEZ1enplckFnZW50LmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKQEAgLTI5OCw3
ICsyOTcsNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6
UnVuTG9vcCogcnVuTG9vcCwgYm9vbCogc3VjY2VzcykKICAgICBoYXNoTWFwQnVja2V0U2V0U3Ry
dWN0dXJlLnNldCgqdGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT46OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKICAgICBoYXNoTWFwQnVj
a2V0TWFwU3RydWN0dXJlLnNldCgqdGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0
YUtleVZhbHVlPjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwog
ICAgIGJpZ0ludFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7Ci0gICAgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKIAogICAgIC8vIEVhZ2VybHkgaW5p
dGlhbGl6ZSBjb25zdGFudCBjZWxscyBzaW5jZSB0aGUgY29uY3VycmVudCBjb21waWxlciBjYW4g
YWNjZXNzIHRoZW0uCiAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAppbmRleCAxZTllMGI0OGMzMjIwNjJmZWU4OTY1MzVmNTExNWE1NjNjYTQ1
Mzk1Li42NjU2OGYyOWZlMGJmZTNmMDNlODA4ZmMxMjRmYmQ4NTJjYmM1ZGY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTM3Myw5ICszNzMsNiBAQCBjbGFzcyBWTSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxW
TT4gewogCiAgICAgRk9SX0VBQ0hfSlNDX0RZTkFNSUNfSVNPX1NVQlNQQUNFKERFRklORV9EWU5B
TUlDX0lTT19TVUJTUEFDRV9BQ0NFU1NPUl9JTVBMKQogCi0gICAgQUxXQVlTX0lOTElORSBJc29D
ZWxsU2V0JiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cygpIHsgcmV0
dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7IH0KLSAg
ICBBTFdBWVNfSU5MSU5FIElzb0NlbGxTZXQmIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aEZpbmFsaXplcnMoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aEZpbmFsaXplcnM7IH0KLQogICAgIEFMV0FZU19JTkxJTkUgR0NDbGllbnQ6Oklzb1N1YnNwYWNl
JiBjb2RlQmxvY2tTcGFjZSgpIHsgcmV0dXJuIGNsaWVudEhlYXAuY29kZUJsb2NrU3BhY2U7IH0K
IAogICAgIERFRklORV9EWU5BTUlDX0lTT19TVUJTUEFDRV9BQ0NFU1NPUihldmFsRXhlY3V0YWJs
ZVNwYWNlKQpAQCAtNDQxLDcgKzQzOCw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gaGFzaE1hcEJ1Y2tldFNldFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBoYXNoTWFwQnVja2V0TWFwU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IGJpZ0ludFN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBleGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlU3RydWN0dXJlOwogCiAgICAgU3Ryb25nPEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cj4gbV9lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456195</attachid>
            <date>2022-03-30 19:28:42 -0700</date>
            <delta_ts>2022-03-30 20:39:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238485-20220330192841.patch</filename>
            <type>text/plain</type>
            <size>82850</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDE3MTc2YmU2MThhZGY2NWU5ZTE1MGIxYjhkNTdjYzEyZmU3MzFkLi42YzczZTE4YjY1M2RkY2Jh
ZDhkZDJkOWUzYmI0NWQ0OWVjOWMyMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTMgQEAKKzIwMjItMDMtMzAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDg1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgdHVybmVkIG91
dCB0aGF0IGdldHRpbmcgQ29kZUJsb2NrIGZyb20gSlNGdW5jdGlvbiBpcyBjcml0aWNhbC4gQXMg
d2Ugc3RhcnQgdXNpbmcgdW5saW5rZWQgQmFzZWxpbmUsIHdlIGFyZSBsb2FkaW5nCisgICAgICAg
IENvZGVCbG9jayBmcm9tIEpTRnVuY3Rpb24gaW5zdGVhZCBvZiBlbWJlZGRpbmcgaXQsIGFuZCBp
dCByb3VnaGx5IGNvbnRyaWJ1dGVzIHRvIDAuNSUgcmVncmVzc2lvbiBpbiBTcGVlZG9tZXRlcjIu
CisgICAgICAgIEl0IGlzIGFsc28gY3J1Y2lhbCB0byBzb21lIG90aGVyIHBsYWNlczogYm91bmQg
ZnVuY3Rpb24gdGh1bmssIHJlbW90ZSBmdW5jdGlvbiB0aHVuaywgYW5kIHZpcnR1YWwgZnVuY3Rp
b24gY2FsbHMuCisgICAgICAgIFdoaWxlIHRoZSBzdWJzZXF1ZW50IHBhdGNoIHdpbGwgZW1iZWQg
Q29kZUJsb2NrIGludG8gQ2FsbExpbmtJbmZvIHRvIG1ha2UgaXQgZmFzdCwgd2UgYWxzbyB3b3Vs
ZCBsaWtlIHRvIGtlZXAgbG9hZGluZworICAgICAgICBDb2RlQmxvY2sgZnJvbSBKU0Z1bmN0aW9u
IGZhc3RlciBzaW5jZSB0aGlzIGlzIHN0aWxsIHVzZWQgaW4gYm91bmQgZnVuY3Rpb24gdGh1bmsg
ZXRjLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIHJlbW92ZSBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlIHRvIHJlbW92ZSBvbmUtbGV2ZWwgaW5kaXJlY3Rpb24gYmV0d2VlbiBFeGVjdXRh
YmxlIHRvIENvZGVCbG9jay4KKyAgICAgICAgV2UgY2FuIGRlbGVnYXRlIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UncyBqb2IgdG8gZXhpc3RpbmcgRXhlY3V0YWJsZXMgc28gdGhhdCB3ZSBjYW4g
a2VlcCB0aGUgY3VycmVudCB3ZWFrLWVkZ2UKKyAgICAgICAgZmVhdHVyZSB3aXRob3V0IGludHJv
ZHVjaW5nIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuIEl0IGFsc28gcmVtb3ZlcyBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlIGFsbG9jYXRpb25zIGFuZAorICAgICAgICBzaHJpbmtzIHNpemVv
ZihDb2RlQmxvY2spIGJ5IDggYnl0ZS4KKworICAgICAgICBXZSBtb3ZlIGtleSBmdW5jdGlvbnMg
ZnJvbSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlIHRvIFNjcmlwdEV4ZWN1dGFibGUsIGFuZCB3
ZSBtYWludGFpbiBFeGVjdXRhYmxlLXRvLUNvZGVCbG9jayBlZGdlCisgICAgICAgIGluIEV4ZWN1
dGFibGUgc2lkZS4KKworICAgICAgICBMb2NhbCB0ZXN0aW5nIHNob3dlZCB0aGF0IDAuMyUgcHJv
Z3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZl
cmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbkNvbW1vbik6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6b3duZXJFZGdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmg6IFJlbW92ZWQuCisgICAgICAgICogaGVh
cC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChKU0M6Okhl
YXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAoSlNDOjpIZWFw
OjpkZWxldGVBbGxDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkQ29yZUNvbnN0
cmFpbnRzKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6U2Ny
aXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0OjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6OnNldEFuZFNw
YWNlRm9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0
OjpjbGVhcmFibGVDb2RlU2V0Rm9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6U2NyaXB0RXhlY3V0
YWJsZVNwYWNlQW5kU2V0OjpvdXRwdXRDb25zdHJhaW50c1NldEZvcik6CisgICAgICAgIChKU0M6
OkhlYXA6OlNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6ZmluYWxpemVyU2V0Rm9yKToKKyAg
ICAgICAgKiBoZWFwL0lzb0NlbGxTZXQuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvRGly
ZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBy
dW50aW1lL0V2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpj
b2RlQmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6dW5saW5rZWRD
b2RlQmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6bnVtVmFyaWFi
bGVzKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om51bUZ1bmN0aW9uSG9pc3RpbmdD
YW5kaWRhdGVzKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om51bVRvcExldmVsRnVu
Y3Rpb25EZWNscyk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjphbGxvd0RpcmVjdEV2
YWxDYWNoZSBjb25zdCk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb2RlQmxvY2sp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHNJbXBs
KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpyZXBsYWNlQ29kZUJsb2NrV2l0aCk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvR2xvYmFsRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6Okdsb2JhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRy
ZW5JbXBsKToKKyAgICAgICAgKEpTQzo6R2xvYmFsRXhlY3V0YWJsZTo6dmlzaXRPdXRwdXRDb25z
dHJhaW50c0ltcGwpOgorICAgICAgICAoSlNDOjpHbG9iYWxFeGVjdXRhYmxlOjpyZXBsYWNlQ29k
ZUJsb2NrV2l0aCk6CisgICAgICAgIChKU0M6Okdsb2JhbEV4ZWN1dGFibGU6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KToKKyAgICAgICAgKiBydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6R2xvYmFsRXhlY3V0YWJsZTo6Y29kZUJsb2NrIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6R2xvYmFsRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2sgY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6Oklu
ZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNG
dW5jdGlvbi5jcHA6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVS
ZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp2
aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgor
ICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpjbGVh
ckNvZGUpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZSk6Cisg
ICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omhhc0NsZWFyYWJsZUNvZGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAg
ICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpydW5Db25zdHJhaW50KToKKyAgICAgICAgKEpTQzo6
U2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDb2RlQmxvY2tFZGdlKToKKyAgICAgICAgKEpTQzo6U2Ny
aXB0RXhlY3V0YWJsZTo6ZmluYWxpemVDb2RlQmxvY2tFZGdlKToKKyAgICAgICAgKiBydW50aW1l
L1NjcmlwdEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAg
KEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZN
OjpleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OlZNOjpleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJz
KTogRGVsZXRlZC4KKwogMjAyMi0wMy0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIE9wdGltaXplIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYSBKU0M6OklkZW50aWZp
ZXIgZnJvbSBhbiBBU0NJSUxpdGVyYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCAwMThhZmVkNzE2MjljZTA3MTYzNmQ5ZmZhNGNkZTdhYmZjYTk0YWZkLi5jMzY1OTM3NjZk
ZDYyYzk5NDFkMzkwNDM0ZTVhNzJkYmVjMDY3NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC02MjcsNyArNjI3LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9EYXRhRm9ybWF0LmgKICAgICBieXRlY29k
ZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmgKICAgICBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCi0g
ICAgYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCiAgICAgYnl0ZWNvZGUvRXhl
Y3V0aW9uQ291bnRlci5oCiAgICAgYnl0ZWNvZGUvRXhpdEtpbmQuaAogICAgIGJ5dGVjb2RlL0V4
aXRpbmdJbmxpbmVLaW5kLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTI5NjE5
N2NhZjlhMTZkMWMzOTUxMjg5MDQ2YjQ2NzkxOTZmMGNlOC4uMGEzMGY2MTA2ZTg0MDU4YzM1NDdi
OTg3MzdjOGYyYmZlMTFmOWUxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3
MCw3ICszNzAsNiBAQAogCQkwRjVFMEZEODIwN0M3MjczMDA5N0YwREUgLyogREZHQWJzdHJhY3RJ
bnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1RTBGRDYyMDdDNzI3MTAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCAqLzsgfTsKIAkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERF
IC8qIElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNUUwRkU1MjA4NkFENDYwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZN
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1
RUY5MUYxNjg3OEY3RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJ
VFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTBGNjBGRTkwMUZGQzM3MDIwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYwRkU4
RTFGRkMzNkZEMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjE4MzJBMUM0NUJG
MDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzIxMUM0NUJGMDcwMDcyNDUwQiAvKiBB
aXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLzsgfTsKIAkJMEY2MTgzMkQxQzQ1QkYwNzAwNzI0NTBC
IC8qIEFpckVtaXRTaHVmZmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjYxODMyNDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuaCAq
LzsgfTsKIAkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxv
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MTgz
MjYxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oICovOyB9OwpAQCAt
Mjg5Nyw4ICsyODk2LDYgQEAKIAkJMEY1RTBGRTYyMDg2QUQ0NzAwOTdGMERFIC8qIElzb1N1YnNw
YWNlUGVyVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXNvU3Vi
c3BhY2VQZXJWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUVGOTFCMTY4
NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSklUVGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKSVRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMEY2MEZFOEQxRkZDMzZGQzAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNjBGRThFMUZG
QzM2RkQwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2MTgzMjAxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckND
YWxsaW5nQ29udmVudGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwOyBwYXRoID0gYjMvYWlyL0FpckNDYWxsaW5nQ29u
dmVudGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjE4MzIxMUM0NUJG
MDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQWlyQ0NhbGxpbmdDb252ZW50aW9uLmg7IHBhdGggPSBiMy9haXIvQWly
Q0NhbGxpbmdDb252ZW50aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjE4
MzIyMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQWlyQ3VzdG9tLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODk3Nyw4ICs4OTc0LDYgQEAKIAkJ
CQkxNEFEOTExMjFEQ0E5N0ZEMDAxNEY5RkUgLyogRXZhbENvZGVCbG9jay5jcHAgKi8sCiAJCQkJ
MTRBRDkxMDYxRENBOTI5NDAwMTRGOUZFIC8qIEV2YWxDb2RlQmxvY2suaCAqLywKIAkJCQkxNDE0
MkU1MjFCNzk2RUREMDBGNEJGNEIgLyogRXhlY3V0YWJsZUluZm8uaCAqLywKLQkJCQkwRjYwRkU4
RDFGRkMzNkZDMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAgKi8sCi0J
CQkJMEY2MEZFOEUxRkZDMzZGRDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Uu
aCAqLywKIAkJCQkwRjU2QTFENDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5j
cHAgKi8sCiAJCQkJMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIu
aCAqLywKIAkJCQkwRjQ0QTdBOTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovLApA
QCAtMTAyNzMsNyArMTAyNjgsNiBAQAogCQkJCUUzNUEwQjlEMjIwQUQ4N0EwMEFDNDQ3NCAvKiBF
eGVjdXRhYmxlQmFzZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTQyRTUzMUI3OTZF
REQwMEY0QkY0QiAvKiBFeGVjdXRhYmxlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1MTkz
RjcyNjZDNDMyRDAwNDgzQTJDIC8qIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTBGNjBGRTkwMUZGQzM3MDIwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU2QTFEMzE1MDAwRjM1MDAyOTkyQjEgLyog
RXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NEE3QjAyMEJGNjg2MjAw
MjJCMTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ0QTdCMTIwQkY2OEM5
MDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDg0YTk2MjQxZGIxZDgzYmJjZGFkM2MxOWVjYTNlNTM5YzZm
YjdiZjcuLjA1MDY5YzU0ODkyNDhhN2QwMmM1NzZkMDBiOTMxMjE2YTQwM2VhMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKQEAgLTIyOSw3ICsyMjksNiBAQCBieXRlY29kZS9EZWxldGVC
eVN0YXR1cy5jcHAKIGJ5dGVjb2RlL0RlbGV0ZUJ5VmFyaWFudC5jcHAKIGJ5dGVjb2RlL0RpcmVj
dEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29kZS9FdmFsQ29kZUJsb2NrLmNwcAotYnl0ZWNvZGUv
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAKIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIu
Y3BwCiBieXRlY29kZS9FeGl0RmxhZy5jcHAKIGJ5dGVjb2RlL0V4aXRLaW5kLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA2ZDlkOGI1MWUx
MTlkYmMwNzgwOTExNGUxY2IxMGVkYjY3Mjg0NTc4Li42YjAyOTE1MGI1MTJiYzM5NWEzMTkwMjhl
MmVjNWE3ZDhlZjhhODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtMzExLDcgKzMxMSw2IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrCiB2
b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcs
IENvZGVCbG9jayYgb3RoZXIpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAg
IGZpbmlzaENyZWF0aW9uQ29tbW9uKHZtKTsKIAogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsK
IApAQCAtMzY3LDcgKzM2Niw2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgSlNTY29w
ZSogc2NvcGUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIGZpbmlzaENy
ZWF0aW9uQ29tbW9uKHZtKTsKIAogICAgIEFTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7CiAK
QEAgLTc2NiwxMSArNzY0LDYgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uQ29tbW9uKFZNJiB2bSkK
LXsKLSAgICBtX293bmVyRWRnZS5zZXQodm0sIHRoaXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2U6OmNyZWF0ZSh2bSwgdGhpcykpOwotfQotCiAjaWYgRU5BQkxFKEpJVCkKIHZvaWQgQ29kZUJs
b2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZShSZWY8QmFzZWxpbmVKSVRDb2RlPiBq
aXRDb2RlKQogewpAQCAtMTA1MSw3ICsxMDQ0LDYgQEAgdm9pZCBDb2RlQmxvY2s6OnZpc2l0Q2hp
bGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICBDb2RlQmxvY2sq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8Q29kZUJsb2NrKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4oY2VsbCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vd25l
ckVkZ2UpOwogICAgIHRoaXNPYmplY3QtPnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiB9CiAKQEAg
LTEwNzksNyArMTA3MSw3IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgc3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMobG9ja2VyLCB2aXNp
dG9yKTsKICAgICBzdHJvbmdseVZpc2l0V2Vha1JlZmVyZW5jZXMobG9ja2VyLCB2aXNpdG9yKTsK
ICAgICAKLSAgICBIZWFwOjpTcGFjZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgpKS5hZGQodGhp
cyk7CisgICAgSGVhcDo6Q29kZUJsb2NrU3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSku
YWRkKHRoaXMpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgpAQCAtMTY2Nyw3ICsx
NjU5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkK
ICAgICB9OwogICAgIHVwZGF0ZUFjdGl2aXR5KCk7CiAKLSAgICBIZWFwOjpTcGFjZUFuZFNldDo6
c2V0Rm9yKCpzdWJzcGFjZSgpKS5yZW1vdmUodGhpcyk7CisgICAgSGVhcDo6Q29kZUJsb2NrU3Bh
Y2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwogCiAgICAgLy8gSW4g
Q29kZUJsb2NrOjpzaG91bGRWaXNpdFN0cm9uZ2x5KCkgd2UgbWF5IGhhdmUgZGVjaWRlZCB0byBz
a2lwIHZpc2l0aW5nIHRoaXMKICAgICAvLyBjb2RlQmxvY2suIEJ5IHRoZSB0aW1lIHdlIGdldCBo
ZXJlLCB3ZSdyZSBkb25lIHdpdGggdGhlIHZlcmlmaWVyIEdDLiBTbywgbGV0J3MKQEAgLTE4MzQs
NyArMTgyNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNl
cyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwKICAgICBVTlVTRURfUEFSQU0obG9j
a2VyKTsKICAgICAKICAgICB2aXNpdG9yLmFwcGVuZChtX2dsb2JhbE9iamVjdCk7Ci0gICAgdmlz
aXRvci5hcHBlbmQobV9vd25lckV4ZWN1dGFibGUpOyAvLyBUaGlzIGlzIGV4dHJhIGltcG9ydGFu
dCBzaW5jZSBpdCBjYXVzZXMgdGhlIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UgdG8gYmUgbWFy
a2VkLgorICAgIHZpc2l0b3IuYXBwZW5kKG1fb3duZXJFeGVjdXRhYmxlKTsgLy8gVGhpcyBpcyBl
eHRyYSBpbXBvcnRhbnQgc2luY2UgaXQgY2F1c2VzIHRoZSBFeGVjdXRhYmxlIC0+IENvZGVCbG9j
ayBlZGdlIGFjdGl2YXRlZC4KICAgICB2aXNpdG9yLmFwcGVuZChtX3VubGlua2VkQ29kZSk7CiAg
ICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgIG1fcmFyZURhdGEtPm1fZGlyZWN0RXZhbENvZGVD
YWNoZS52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAppbmRleCA0Njk2M2Q3M2RlMjNlMDFmZDE1MjU0NTFhODM0N2I2Yzc3
NWMxODI2Li4yN2E4MzM1MTgwMDEzNjk4NTQyZTQ3YjU0M2NhYjMyYmEzYWNjZjMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04NywxMiArODcsMTIg
QEAgY2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBj
bGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7Ci1jbGFz
cyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOwogY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsK
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIExMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDsKIGNsYXNzIE1ldGFkYXRhVGFibGU7CiBjbGFzcyBS
ZWdpc3RlckF0T2Zmc2V0TGlzdDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTdHJ1
Y3R1cmVTdHViSW5mbzsKIGNsYXNzIEJhc2VsaW5lSklUQ29kZTsKIGNsYXNzIEJhc2VsaW5lSklU
RGF0YTsKQEAgLTEzNCw4ICsxMzQsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENv
ZGVCbG9jayYgb3RoZXIpOwogICAgIGJvb2wgZmluaXNoQ3JlYXRpb24oVk0mLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiwgSlNTY29wZSopOwot
ICAgIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb25Db21tb24oVk0mKTsKIAogICAgIFdyaXRlQmFy
cmllcjxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAKQEAgLTM2OSw4ICszNjcsNiBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAKICAgICBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX293bmVyRXhlY3V0YWJs
ZS5nZXQoKTsgfQogICAgIAotICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIG93bmVyRWRn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJFZGdlLmdldCgpOyB9Ci0KICAgICBWTSYgdm0oKSBj
b25zdCB7IHJldHVybiAqbV92bTsgfQogCiAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNSZWdpc3Rl
cigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT50aGlzUmVnaXN0ZXIoKTsgfQpAQCAt
ODQ5LDcgKzg0NSw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2tTZXQ7Ci0gICAgZnJpZW5kIGNsYXNzIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U7CisgICAgZnJpZW5kIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZTsKKyAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFZpc2l0b3I+IEFMV0FZU19JTkxJTkUgdm9pZCB2aXNpdENoaWxkcmVuKFZpc2l0
b3ImKTsKIApAQCAtOTIzLDcgKzkyMCw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogCiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkQ29kZUJsb2NrPiBtX3VubGlua2VkQ29k
ZTsKICAgICBXcml0ZUJhcnJpZXI8U2NyaXB0RXhlY3V0YWJsZT4gbV9vd25lckV4ZWN1dGFibGU7
Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fb3duZXJFZGdl
OwogICAgIC8vIG1fdm0gbXVzdCBiZSBhIHBvaW50ZXIgKGluc3RlYWQgb2YgYSByZWZlcmVuY2Up
IGJlY2F1c2UgdGhlIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcgogICAgIC8vIGNhbm5vdCBoYW5k
bGUgaXQgYmVpbmcgYSByZWZlcmVuY2UuCiAgICAgVk0qIG1fdm07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2ZGRiN2E2NjU3OTliNjc3Njdi
MzA0ZmU1ZjM1ODk0N2FkNDc5MzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjEyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oIgotCi0jaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKLSNpbmNsdWRl
ICJKU09iamVjdElubGluZXMuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCi0KLW5h
bWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6c19pbmZvID0geyAiRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSJfcywgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlKSB9OwotCi1TdHJ1Y3R1cmUqIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQotewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
Ci19Ci0KLUV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2U6OmNyZWF0ZShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQotewotICAgIEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2UqIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtKSkgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSh2
bSwgY29kZUJsb2NrKTsKLSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi12b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgQVNT
RVJUKCFpc0FjdGl2ZSgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLXZvaWQg
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxs
LCBWaXNpdG9yJiB2aXNpdG9yKQotewotICAgIFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsKLSAgICBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBlZGdlID0ganNDYXN0PEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2UqPihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNlbGwsIGlu
Zm8oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsKLQotICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZWRnZS0+bV9jb2RlQmxvY2suZ2V0KCk7Ci0KLSAgICAvLyBJ
dCdzIHBvc3NpYmxlIGZvciBzb21lb25lIHRvIGhvbGQgYSBwb2ludGVyIHRvIHRoZSBlZGdlIGFm
dGVyIHRoZSBlZGdlIGhhcyBjbGVhcmVkIGl0cyB3ZWFrCi0gICAgLy8gcmVmZXJlbmNlIHRvIHRo
ZSBjb2RlQmxvY2suIEluIGEgY29uc2VydmF0aXZlIEdDIGxpa2Ugb3VycywgdGhhdCBjb3VsZCBo
YXBwZW4gYXQgcmFuZG9tIGZvcgotICAgIC8vIG5vIGdvb2QgcmVhc29uIGFuZCBpdCdzIFRvdGFs
bHkgT0sgKFRNKS4gU2VlIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkgZm9yIHdoZXJlIHdlIGNs
ZWFyCi0gICAgLy8gbV9jb2RlQmxvY2suCi0gICAgaWYgKCFjb2RlQmxvY2spCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBpZiAoIWVkZ2UtPmlzQWN0aXZlKCkpIHsKLSAgICAgICAgdmlzaXRv
ci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIAotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwot
Ci0gICAgaWYgKGNvZGVCbG9jay0+c2hvdWxkVmlzaXRTdHJvbmdseShsb2NrZXIsIHZpc2l0b3Ip
KQotICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jayk7Ci0gICAgCi0g
ICAgaWYgKCF2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZtLmV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoKS5hZGQoZWRnZSk7Ci0gICAgCi0gICAg
aWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpIHsKLSAg
ICAgICAgLy8gSWYgd2UgamV0dGlzb24gb3Vyc2VsdmVzIHdlJ2xsIGluc3RhbGwgb3VyIGFsdGVy
bmF0aXZlLCBzbyBtYWtlIHN1cmUgdGhhdCBpdAotICAgICAgICAvLyBzdXJ2aXZlcyBHQyBldmVu
IGlmIHdlIGRvbid0LgotICAgICAgICB2aXNpdG9yLmFwcGVuZChjb2RlQmxvY2stPm1fYWx0ZXJu
YXRpdmUpOwotICAgIH0KLSAgICAKLSAgICAvLyBOT1RFOiBUaGVyZSBhcmUgdHdvIHNpZGVzIHRv
IHRoaXMgY29uc3RyYWludCwgd2l0aCBkaWZmZXJlbnQgcmVxdWlyZW1lbnRzIGZvciBjb3JyZWN0
bmVzcy4KLSAgICAvLyBCZWNhdXNlIGV2ZXJ5dGhpbmcgaXMgdWx0aW1hdGVseSBwcm90ZWN0ZWQg
d2l0aCB3ZWFrIHJlZmVyZW5jZXMgYW5kIGpldHRpc29uaW5nLCBpdCdzCi0gICAgLy8gYWx3YXlz
ICJPSyIgdG8gY2xhaW0gdGhhdCBzb21ldGhpbmcgaXMgZGVhZCBwcmVtYXR1cmVseSBhbmQgaXQn
cyAiT0siIHRvIGtlZXAgdGhpbmdzIGFsaXZlLgotICAgIC8vIEJ1dCBib3RoIGNob2ljZXMgY291
bGQgbGVhZCB0byBiYWQgcGVyZiAtIGVpdGhlciByZWNvbXAgY3ljbGVzIG9yIGxlYWtzLgotICAg
IC8vCi0gICAgLy8gRGV0ZXJtaW5pbmcgQ29kZUJsb2NrIGxpdmVuZXNzOiBUaGlzIHBhcnQgaXMg
dGhlIG1vc3QgY29uc2VxdWVudGlhbC4gV2Ugd2FudCB0byBrZWVwIHRoZQotICAgIC8vIG91dHB1
dCBjb25zdHJhaW50IGFjdGl2ZSBzbyBsb25nIGFzIHdlIHRoaW5rIHRoYXQgd2UgbWF5IHlldCBw
cm92ZSB0aGF0IHRoZSBDb2RlQmxvY2sgaXMKLSAgICAvLyBsaXZlIGJ1dCB3ZSBoYXZlbid0IGRv
bmUgaXQgeWV0LgotICAgIC8vCi0gICAgLy8gTWFya2luZyBTdHJ1Y3R1cmVzIGlmIHByb2ZpdGFi
bGU6IEl0J3MgaW1wb3J0YW50IHRoYXQgd2UgZG8gYSBwYXNzIG9mIHRoaXMuIExvZ2ljYWxseSwg
dGhpcwotICAgIC8vIHNlZW1zIGxpa2UgaXQgaXMgYSBjb25zdHJhaW50IG9mIENvZGVCbG9jay4g
QnV0IHdlIGhhdmUgYWx3YXlzIGZpcnN0IHJ1biB0aGlzIGFzIGEgcmVzdWx0Ci0gICAgLy8gb2Yg
dGhlIGVkZ2UgYmVpbmcgbWFya2VkIGV2ZW4gYmVmb3JlIHdlIGRldGVybWluZSB0aGUgbGl2ZW5l
c3Mgb2YgdGhlIENvZGVCbG9jay4gVGhpcwotICAgIC8vIGFsbG93cyBhIENvZGVCbG9jayB0byBt
YXJrIGl0c2VsZiBieSBmaXJzdCBwcm92aW5nIHRoYXQgYWxsIG9mIHRoZSBTdHJ1Y3R1cmVzIGl0
IHdlYWtseQotICAgIC8vIGRlcGVuZHMgb24gY291bGQgYmUgc3Ryb25nbHkgbWFya2VkLiAoVGhp
cyBwYXJ0IGlzIGFsc28gY2FsbGVkIHByb3BhZ2F0ZVRyYW5zaXRpb25zLikKLSAgICAvLwotICAg
IC8vIEFzIGEgd2VpcmQgY2F2ZWF0LCB3ZSBvbmx5IGZpeHBvaW50IHRoZSBjb25zdHJhaW50cyBz
byBsb25nIGFzIHRoZSBDb2RlQmxvY2sgaXMgbm90IGxpdmUuCi0gICAgLy8gVGhpcyBtZWFucyB0
aGF0IHdlIG1heSBvdmVybG9vayBzdHJ1Y3R1cmUgbWFya2luZyBvcHBvcnR1bml0aWVzIGNyZWF0
ZWQgYnkgb3RoZXIgbWFya2luZwotICAgIC8vIHRoYXQgaGFwcGVucyBhZnRlciB0aGUgQ29kZUJs
b2NrIGlzIG1hcmtlZC4gVGhpcyB3YXMgYW4gYWNjaWRlbnRhbCBwb2xpY3kgZGVjaXNpb24gZnJv
bSBhCi0gICAgLy8gbG9uZyB0aW1lIGFnbywgYnV0IGl0IGlzIHByb2JhYmx5IE9LLCBzaW5jZSBp
dCdzIG9ubHkgd29ydGh3aGlsZSB0byBrZWVwIGZpeHBvaW50aW5nIHRoZQotICAgIC8vIHN0cnVj
dHVyZSBtYXJraW5nIGlmIHdlIHN0aWxsIGhhdmUgdW5tYXJrZWQgc3RydWN0dXJlcyBhZnRlciB0
aGUgZmlyc3Qgcm91bmQuIFdlIGFsbW9zdAotICAgIC8vIG5ldmVyIHdpbGwgYmVjYXVzZSB3ZSB3
aWxsIG1hcmstaWYtcHJvZml0YWJsZSBiYXNlZCBvbiB0aGUgb3duaW5nIGdsb2JhbCBvYmplY3Qg
YmVpbmcKLSAgICAvLyBhbHJlYWR5IG1hcmtlZC4gV2UgbWFyayBpdCBqdXN0IGluIGNhc2UgdGhh
dCBoYWRuJ3QgaGFwcGVuZWQgeWV0LiBBbmQgaWYgdGhlIENvZGVCbG9jayBpcwotICAgIC8vIG5v
dCB5ZXQgbWFya2VkIGJlY2F1c2UgaXQgd2Vha2x5IGRlcGVuZHMgb24gYSBzdHJ1Y3R1cmUgdGhh
dCB3ZSBkaWQgbm90IHlldCBtYXJrLCB0aGVuIHdlCi0gICAgLy8gd2lsbCBrZWVwIGZpeHBvaW50
aW5nIHVudGlsIHRoZSBlbmQuCi0gICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKTsKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dp
dGhDb25zdHJhaW50cygpLmFkZChlZGdlKTsKLSAgICBlZGdlLT5ydW5Db25zdHJhaW50KGxvY2tl
ciwgdm0sIHZpc2l0b3IpOwotfQotCi1ERUZJTkVfVklTSVRfQ0hJTERSRU4oRXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnZpc2l0T3V0cHV0Q29uc3RyYWludHNJbXBsKEpTQ2VsbCog
Y2VsbCwgVmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7Ci0g
ICAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSA9IGpzQ2FzdDxFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlKj4oY2VsbCk7Ci0gICAgCi0gICAgZWRnZS0+cnVuQ29uc3RyYWludChOb0xv
Y2tpbmdOZWNlc3NhcnksIHZtLCB2aXNpdG9yKTsKLX0KLQotREVGSU5FX1ZJU0lUX09VVFBVVF9D
T05TVFJBSU5UUyhFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKTsKLQotdm9pZCBFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCi17Ci0gICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2NvZGVCbG9jay5nZXQoKTsKLSAgICAKLSAgICBpZiAo
IXZtLmhlYXAuaXNNYXJrZWQoY29kZUJsb2NrKSkgewotICAgICAgICBpZiAoY29kZUJsb2NrLT5z
aG91bGRKZXR0aXNvbkR1ZVRvV2Vha1JlZmVyZW5jZSh2bSkpCi0gICAgICAgICAgICBjb2RlQmxv
Y2stPmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvV2Vha1JlZmVyZW5jZSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGNvZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRp
c29uRHVlVG9PbGRBZ2UpOwotICAgICAgICBtX2NvZGVCbG9jay5jbGVhcigpOwotICAgIH0KLSAg
ICAKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkucmVt
b3ZlKHRoaXMpOwotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFp
bnRzKCkucmVtb3ZlKHRoaXMpOwotfQotCi1pbmxpbmUgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlOjphY3RpdmF0ZSgpCi17Ci0gICAgc2V0UGVyQ2VsbEJpdCh0cnVlKTsKLX0KLQotaW5s
aW5lIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZSgpCi17Ci0gICAg
c2V0UGVyQ2VsbEJpdChmYWxzZSk7Ci19Ci0KLWlubGluZSBib29sIEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U6OmlzQWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcGVyQ2VsbEJpdCgpOwot
fQotCi1Db2RlQmxvY2sqIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGVBbmRV
bndyYXAoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSkKLXsKLSAgICBpZiAoIWVkZ2Up
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGVkZ2UtPmRlYWN0aXZhdGUoKTsKLSAgICBy
ZXR1cm4gZWRnZS0+Y29kZUJsb2NrKCk7Ci19Ci0KLUV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Uq
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OndyYXAoQ29kZUJsb2NrKiBjb2RlQmxvY2spCi17
Ci0gICAgaWYgKCFjb2RlQmxvY2spCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBjb2RlQmxvY2stPm93bmVyRWRnZSgpOwotfQotICAgIAotRXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZSogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6d3JhcEFuZEFjdGl2YXRlKENvZGVCbG9j
ayogY29kZUJsb2NrKQotewotICAgIGlmICghY29kZUJsb2NrKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiByZXN1bHQgPSBjb2RlQmxvY2st
Pm93bmVyRWRnZSgpOwotICAgIHJlc3VsdC0+YWN0aXZhdGUoKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi1FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgOiBCYXNlKHZtLCB2bS5leGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlU3RydWN0dXJlLmdldCgpKQotICAgICwgbV9jb2RlQmxvY2so
dm0sIHRoaXMsIGNvZGVCbG9jaykKLXsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4K
LXZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6cnVuQ29uc3RyYWludChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImIGxvY2tlciwgVk0mIHZtLCBWaXNpdG9yJiB2aXNpdG9yKQotewotICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2suZ2V0KCk7Ci0gICAgCi0gICAgY29k
ZUJsb2NrLT5wcm9wYWdhdGVUcmFuc2l0aW9ucyhsb2NrZXIsIHZpc2l0b3IpOwotICAgIGNvZGVC
bG9jay0+ZGV0ZXJtaW5lTGl2ZW5lc3MobG9ja2VyLCB2aXNpdG9yKTsKLQotICAgIGlmICh2aXNp
dG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkucmVtb3ZlKHRoaXMpOwotfQotCi10ZW1wbGF0ZSB2b2lk
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiwgVk0mLCBBYnN0cmFjdFNsb3RWaXNpdG9yJik7Ci10ZW1wbGF0ZSB2b2lkIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgVk0mLCBTbG90VmlzaXRvciYpOwotCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNhNmY5YjRl
OGUxYWFhMmU3MGEzZDAxY2YzOWYyOTY2YmM5MzQ2Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgotI2luY2x1ZGUgIklzb1N1
YnNwYWNlLmgiCi0jaW5jbHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiVk0uaCIKLQotbmFtZXNw
YWNlIEpTQyB7Ci0KLWNsYXNzIENvZGVCbG9jazsKLWNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKLQotY2xhc3MgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSBmaW5hbCA6IHB1YmxpYyBKU0Nl
bGwgewotcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3Ry
dWN0dXJlSXNJbW1vcnRhbDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KLSAgICBzdGF0aWMgR0NDbGllbnQ6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCi0gICAgewotICAgICAgICByZXR1cm4gJnZtLmV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VTcGFjZSgpOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwotCi0gICAgc3Rh
dGljIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGNyZWF0ZShWTSYsIENvZGVCbG9jayopOwot
ICAgIAotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlQmxvY2suZ2V0KCk7IH0KLQotICAgIERFQ0xBUkVfVklTSVRfQ0hJ
TERSRU47Ci0gICAgREVDTEFSRV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlOVFM7Ci0gICAgdm9pZCBm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOwotICAgIAotICAgIHN0YXRpYyBDb2RlQmxvY2sq
IHVud3JhcChFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBlZGdlKQotICAgIHsKLSAgICAgICAg
aWYgKCFlZGdlKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBl
ZGdlLT5jb2RlQmxvY2soKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIENvZGVCbG9jayogZGVh
Y3RpdmF0ZUFuZFVud3JhcChFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBlZGdlKTsKLSAgICAK
LSAgICBzdGF0aWMgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogd3JhcChDb2RlQmxvY2sqIGNv
ZGVCbG9jayk7Ci0gICAgCi0gICAgc3RhdGljIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIHdy
YXBBbmRBY3RpdmF0ZShDb2RlQmxvY2sqIGNvZGVCbG9jayk7Ci0KLSAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mQ29kZUJsb2NrKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2UsIG1fY29kZUJsb2NrKTsgfQotICAgIAotcHJpdmF0ZToKLSAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotCi0gICAgRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZShWTSYsIENvZGVCbG9jayopOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYpOwotCi0gICAgdm9pZCBhY3RpdmF0ZSgpOwotICAgIHZvaWQgZGVhY3RpdmF0ZSgpOwotICAg
IGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+
IHZvaWQgcnVuQ29uc3RyYWludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIFZpc2l0
b3ImKTsKLQotICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDhl
NTNkZGVhZDFmZDQ1NTgwZjVmOTRkNDhlY2ZhY2UxN2M3NzcwNjEuLjcxYjg3ODNiMmJmNmEyMWM2
OTYzNjM3NTI1NTYzYjQzNThkNmM1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CkBAIC0zNjgsOCArMzY4LDYgQEAgSGVhcDo6SGVhcChWTSYgdm0sIEhlYXBUeXBlIGhlYXBUeXBl
KQogICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0Iiwg
KnRoaXMsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRv
ci5nZXQoKSkgLy8gSGFzaDoweDRmNWVkN2E5CiAgICAgRk9SX0VBQ0hfSlNDX0NPTU1PTl9JU09f
U1VCU1BBQ0UoSU5JVF9TRVJWRVJfSVNPX1NVQlNQQUNFKQogICAgIEZPUl9FQUNIX0pTQ19TVFJV
Q1RVUkVfSVNPX1NVQlNQQUNFKElOSVRfU0VSVkVSX1NUUlVDVFVSRV9JU09fU1VCU1BBQ0UpCi0g
ICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyhleGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlU3BhY2UpCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dp
dGhGaW5hbGl6ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKICAgICAsIGNvZGVC
bG9ja1NwYWNlQW5kU2V0IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBDb2RlQmxvY2spIC8vIEhhc2g6MHg3N2U2NmVjOQogICAgICwgZnVuY3Rp
b25FeGVjdXRhYmxlU3BhY2VBbmRTZXQgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweDVkMTU4
ZjMKICAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2VBbmRTZXQgSVNPX1NVQlNQQUNFX0lOSVQo
KnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb2dyYW1FeGVjdXRhYmxlKSAv
LyBIYXNoOjB4NTI3Yzc3ZTcKQEAgLTY3NCw5ICs2NzIsMjIgQEAgdm9pZCBIZWFwOjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkKIHsKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwog
ICAgIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwot
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RnVuY3Rpb25FeGVjdXRh
YmxlPihmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldC5zcGFjZSk7CisKKyAgICB7CisgICAg
ICAgIC8vIFdlIHJ1biB0aGlzIGJlZm9yZSBDb2RlQmxvY2sncyB1bmNvbmRpdGlvbmFsIGZpbmFs
aXplciBzaW5jZSBDb2RlQmxvY2sgbG9va3MgYXQgdGhlIG93bmVyIGV4ZWN1dGFibGUncyBpbnN0
YWxsZWQgQ29kZUJsb2NrIGluIGl0cyBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseS4KKworICAgICAg
ICAvLyBGdW5jdGlvbkV4ZWN1dGFibGUgcmVxdWlyZXMgYWxsIGxpdmUgaW5zdGFuY2VzIHRvIHJ1
biBmaW5hbGl6ZXJzLiBUaHVzLCB3ZSBkbyBub3QgdXNlIGZpbmFsaXplciBzZXQuCisgICAgICAg
IGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RnVuY3Rpb25FeGVjdXRhYmxl
PihmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldC5zcGFjZSk7CisKKyAgICAgICAgZmluYWxp
emVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxQcm9ncmFtRXhlY3V0YWJsZT4ocHJvZ3Jh
bUV4ZWN1dGFibGVTcGFjZUFuZFNldC5maW5hbGl6ZXJTZXQpOworICAgICAgICBpZiAobV9ldmFs
RXhlY3V0YWJsZVNwYWNlKQorICAgICAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFs
RmluYWxpemVyczxFdmFsRXhlY3V0YWJsZT4obV9ldmFsRXhlY3V0YWJsZVNwYWNlLT5maW5hbGl6
ZXJTZXQpOworICAgICAgICBpZiAobV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQorICAg
ICAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZT4obV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLT5maW5hbGl6ZXJT
ZXQpOworICAgIH0KKwogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
U3ltYm9sVGFibGU+KHN5bWJvbFRhYmxlU3BhY2UpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4oZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk7IC8vIFdlIHJ1biB0aGlzIGJlZm9yZSBDb2Rl
QmxvY2sncyB1bmNvbmRpdGlvbmFsIGZpbmFsaXplciBzaW5jZSBDb2RlQmxvY2sgbG9va3MgYXQg
dGhlIG93bmVyIGV4ZWN1dGFibGUncyBpbnN0YWxsZWQgQ29kZUJsb2NrIGluIGl0cyBmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseS4KKwogICAgIGZvckVhY2hDb2RlQmxvY2tTcGFjZSgKICAgICAgICAg
WyZdIChhdXRvJiBzcGFjZSkgewogICAgICAgICAgICAgdGhpcy0+ZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxDb2RlQmxvY2s+KHNwYWNlLnNldCk7CkBAIC0xMDAzLDcgKzEw
MTQsNyBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MoRGVsZXRlQWxsQ29kZUVmZm9y
dCBlZmZvcnQpCiAgICAgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZSgKICAgICAgICAgWyZd
IChhdXRvJiBzcGFjZUFuZFNldCkgewogICAgICAgICAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhl
YXBJdGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgICAgICAgICBhdXRvJiBzZXQgPSBzcGFjZUFu
ZFNldC5zZXQ7CisgICAgICAgICAgICBhdXRvJiBzZXQgPSBzcGFjZUFuZFNldC5jbGVhcmFibGVD
b2RlU2V0OwogICAgICAgICAgICAgc2V0LmZvckVhY2hMaXZlQ2VsbCgKICAgICAgICAgICAgICAg
ICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgewogICAgICAgICAgICAgICAg
ICAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8U2NyaXB0RXhl
Y3V0YWJsZSo+KGNlbGwpOwpAQCAtMjkxNyw3ICsyOTI4LDEyIEBAIHZvaWQgSGVhcDo6YWRkQ29y
ZUNvbnN0cmFpbnRzKCkKIAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFNldFJvb3RN
YXJrUmVhc29uU2NvcGUgcm9vdFNjb3BlKHZpc2l0b3IsIFJvb3RNYXJrUmVhc29uOjpFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlcyk7Ci0gICAgICAgICAgICAgICAgYWRkKGhlYXAtPmV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKTsKKyAgICAgICAgICAgICAgICBhZGQo
aGVhcC0+ZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQub3V0cHV0Q29uc3RyYWludHNTZXQp
OworICAgICAgICAgICAgICAgIGFkZChoZWFwLT5wcm9ncmFtRXhlY3V0YWJsZVNwYWNlQW5kU2V0
Lm91dHB1dENvbnN0cmFpbnRzU2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoaGVhcC0+bV9ldmFs
RXhlY3V0YWJsZVNwYWNlKQorICAgICAgICAgICAgICAgICAgICBhZGQoaGVhcC0+bV9ldmFsRXhl
Y3V0YWJsZVNwYWNlLT5vdXRwdXRDb25zdHJhaW50c1NldCk7CisgICAgICAgICAgICAgICAgaWYg
KGhlYXAtPm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAgICAgICAg
ICAgYWRkKGhlYXAtPm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZS0+b3V0cHV0Q29uc3Ry
YWludHNTZXQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGhlYXAtPm1fd2Vha01h
cFNwYWNlKSB7CiAgICAgICAgICAgICAgICAgU2V0Um9vdE1hcmtSZWFzb25TY29wZSByb290U2Nv
cGUodmlzaXRvciwgUm9vdE1hcmtSZWFzb246OldlYWtNYXBTcGFjZSk7CkBAIC0zMTY5LDE4ICsz
MTg1LDE4IEBAIEZPUl9FQUNIX0pTQ19EWU5BTUlDX0lTT19TVUJTUEFDRShERUZJTkVfRFlOQU1J
Q19JU09fU1VCU1BBQ0VfTUVNQkVSX1NMT1cpCiAKICN1bmRlZiBERUZJTkVfRFlOQU1JQ19JU09f
U1VCU1BBQ0VfTUVNQkVSX1NMT1cKIAotI2RlZmluZSBERUZJTkVfRFlOQU1JQ19TUEFDRV9BTkRf
U0VUX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAorI2RlZmluZSBERUZJ
TkVfRFlOQU1JQ19TUEFDRV9BTkRfU0VUX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwg
dHlwZSwgc3BhY2VUeXBlKSBcCiAgICAgSXNvU3Vic3BhY2UqIEhlYXA6Om5hbWUjI1Nsb3coKSBc
CiAgICAgeyBcCiAgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8gc3Bh
Y2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgaGVh
cENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxzcGFj
ZVR5cGU+IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCiAg
ICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKICAgICAgICAgbV8jI25hbWUgPSBXVEZN
b3ZlKHNwYWNlKTsgXAogICAgICAgICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsgXAogICAgIH0K
IAotREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xPVyhldmFsRXhlY3V0YWJs
ZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBFdmFsRXhlY3V0YWJsZSkgLy8g
SGFzaDoweDk1OGUzZTlkCi1ERUZJTkVfRFlOQU1JQ19TUEFDRV9BTkRfU0VUX01FTUJFUl9TTE9X
KG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NjUwNmZhM2MKK0RFRklORV9E
WU5BTUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NMT1coZXZhbEV4ZWN1dGFibGVTcGFjZSwgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFibGUsIEhlYXA6OlNjcmlwdEV4
ZWN1dGFibGVTcGFjZUFuZFNldCkgLy8gSGFzaDoweDk1OGUzZTlkCitERUZJTkVfRFlOQU1JQ19T
UEFDRV9BTkRfU0VUX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLCBIZWFw
OjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQpIC8vIEhhc2g6MHg2NTA2ZmEzYwogCiAjdW5k
ZWYgREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xPVwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKaW5kZXggYWYwZTRjNDZhNmNlYTcwNmJjYjFhZWVjNDEyZjE5ZDUxYmI0
ODE1Mi4uZmFkODU5OThlYTQ3YjkyMWRjNDZiNTkzMzAyNTQxZTJiZmUzYjdjNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtMTIwLDcgKzEyMCw2IEBAIGNsYXNzIEhlYXA7CiAgICAg
dihkYXRlSW5zdGFuY2VTcGFjZSwgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlLCBEYXRlSW5zdGFu
Y2UpIFwKICAgICB2KGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIpIFwKICAgICB2KGV4Y2VwdGlvblNwYWNlLCBk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBFeGNlcHRpb24pIFwKLSAgICB2KGV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZSkgXAogICAgIHYoZnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNG
dW5jdGlvbikgXAogICAgIHYoZ2V0dGVyU2V0dGVyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEdl
dHRlclNldHRlcikgXAogICAgIHYoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UsIGdsb2Jh
bExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQpIFwKQEAgLTEwMjksMTAgKzEwMjgsNyBAQCBjbGFzcyBIZWFwIHsKICAgICBGT1JfRUFDSF9K
U0NfRFlOQU1JQ19JU09fU1VCU1BBQ0UoREVGSU5FX0RZTkFNSUNfSVNPX1NVQlNQQUNFX01FTUJF
UikKICN1bmRlZiBERUZJTkVfRFlOQU1JQ19JU09fU1VCU1BBQ0VfTUVNQkVSCiAgICAgCi0gICAg
SXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50czsKLSAg
ICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnM7Ci0K
LSNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobmFtZSkgXAorI2Rl
ZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihuYW1lLCB0eXBlKSBcCiAg
ICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAogICAgIElzb1N1YnNwYWNlKiBuYW1l
KCkgXAogICAgIHsgXApAQCAtMTA0Myw3ICsxMDM5LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgICAg
IHJldHVybiBuYW1lIyNTbG93KCk7IFwKICAgICB9IFwKICAgICBJc29TdWJzcGFjZSogbmFtZSMj
U2xvdygpOyBcCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNwYWNlQW5kU2V0PiBtXyMjbmFtZTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8dHlwZT4gbV8jI25hbWU7CiAgICAgCiAgICAgc3RydWN0IFNwYWNl
QW5kU2V0IHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTA2
Nyw3ICsxMDYzLDggQEAgY2xhc3MgSGVhcCB7CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgU3Bh
Y2VBbmRTZXQgY29kZUJsb2NrU3BhY2VBbmRTZXQ7CisgICAgdXNpbmcgQ29kZUJsb2NrU3BhY2VB
bmRTZXQgPSBTcGFjZUFuZFNldDsKKyAgICBDb2RlQmxvY2tTcGFjZUFuZFNldCBjb2RlQmxvY2tT
cGFjZUFuZFNldDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JF
YWNoQ29kZUJsb2NrU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKQEAgLTEwNzUsMTAgKzEwNzIsMzkg
QEAgY2xhc3MgSGVhcCB7CiAgICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2VBbmRTZXQpOwogICAg
IH0KIAotICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVjdXRh
YmxlU3BhY2UpCi0gICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKLSAgICBTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFi
bGVTcGFjZUFuZFNldDsKLSAgICBTcGFjZUFuZFNldCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlQW5k
U2V0OworICAgIHN0cnVjdCBTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQgeworICAgICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICAgICAgSXNvU3Vic3BhY2Ugc3Bh
Y2U7CisgICAgICAgIElzb0NlbGxTZXQgY2xlYXJhYmxlQ29kZVNldDsKKyAgICAgICAgSXNvQ2Vs
bFNldCBvdXRwdXRDb25zdHJhaW50c1NldDsKKyAgICAgICAgSXNvQ2VsbFNldCBmaW5hbGl6ZXJT
ZXQ7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgICAgICBT
Y3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQoQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQorICAg
ICAgICAgICAgOiBzcGFjZShzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKQor
ICAgICAgICAgICAgLCBjbGVhcmFibGVDb2RlU2V0KHNwYWNlKQorICAgICAgICAgICAgLCBvdXRw
dXRDb25zdHJhaW50c1NldChzcGFjZSkKKyAgICAgICAgICAgICwgZmluYWxpemVyU2V0KHNwYWNl
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgU2NyaXB0RXhlY3V0YWJs
ZVNwYWNlQW5kU2V0JiBzZXRBbmRTcGFjZUZvcihTdWJzcGFjZSYgc3BhY2UpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFNjcmlwdEV4ZWN1dGFibGVTcGFjZUFu
ZFNldCo+KAorICAgICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oJnNwYWNlKSAtCisg
ICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNl
dCwgc3BhY2UpKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBJc29DZWxsU2V0JiBjbGVh
cmFibGVDb2RlU2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkgeyByZXR1cm4gc2V0QW5kU3BhY2VGb3Io
c3BhY2UpLmNsZWFyYWJsZUNvZGVTZXQ7IH0KKyAgICAgICAgc3RhdGljIElzb0NlbGxTZXQmIG91
dHB1dENvbnN0cmFpbnRzU2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkgeyByZXR1cm4gc2V0QW5kU3Bh
Y2VGb3Ioc3BhY2UpLm91dHB1dENvbnN0cmFpbnRzU2V0OyB9CisgICAgICAgIHN0YXRpYyBJc29D
ZWxsU2V0JiBmaW5hbGl6ZXJTZXRGb3IoU3Vic3BhY2UmIHNwYWNlKSB7IHJldHVybiBzZXRBbmRT
cGFjZUZvcihzcGFjZSkuZmluYWxpemVyU2V0OyB9CisgICAgfTsKKworICAgIERZTkFNSUNfU1BB
Q0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVjdXRhYmxlU3BhY2UsIFNjcmlwdEV4ZWN1
dGFibGVTcGFjZUFuZFNldCkKKyAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJF
Uihtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRT
ZXQpCisgICAgU2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlQW5kU2V0OworICAgIFNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldCBwcm9ncmFtRXhlY3V0
YWJsZVNwYWNlQW5kU2V0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lk
IGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKQEAgLTEwOTEs
NyArMTExNyw4IEBAIGNsYXNzIEhlYXAgewogICAgICAgICBmdW5jKHByb2dyYW1FeGVjdXRhYmxl
U3BhY2VBbmRTZXQpOwogICAgIH0KIAotICAgIFNwYWNlQW5kU2V0IHVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2VBbmRTZXQ7CisgICAgdXNpbmcgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTcGFjZUFuZFNldCA9IFNwYWNlQW5kU2V0OworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2VBbmRTZXQgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldDsKIAog
ICAgIFZlY3RvcjxJc29TdWJzcGFjZVBlclZNKj4gcGVyVk1Jc29TdWJzcGFjZXM7CiAjdW5kZWYg
RFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb0NlbGxTZXQuaAppbmRleCBjY2I4NDVlYTExZmJlYThlMmFkY2U1NjYxYmRlYThjMjFl
OWEyYTlmLi44YmQ3ZTdlYTVhOTQyM2VhZWFhYzBmOTQ5YzEwYzRjMWYwYmE3Y2QwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5j
bHVkZSA8d3RmL0JpdG1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Db25jdXJyZW50VmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvTm9ubW92YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExp
bmtlZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgogCkBAIC00MCw3ICs0Miw5
IEBAIGNsYXNzIElzb1N1YnNwYWNlOwogLy8gQ3JlYXRlIGEgc2V0IG9mIGNlbGxzIHRoYXQgYXJl
IGluIGFuIElzb1N1YnNwYWNlLiBUaGlzIGFsbG93cyBjb25jdXJyZW50IE8oMSkgc2V0IGluc2Vy
dGlvbiBhbmQKIC8vIHJlbW92YWwuIEVhY2ggc3VjaCBzZXQgc2hvdWxkIGJlIHRob3VnaHQgb2Yg
YXMgYSAwLjglIGluY3JlYXNlIGluIG9iamVjdCBzaXplIGZvciBvYmplY3RzIGluIHRoYXQKIC8v
IElzb1N1YnNwYWNlIChpdCdzIGxpa2UgYWRkaW5nIDEgYml0IGV2ZXJ5IDE2IGJ5dGVzLCBvciAx
IGJpdCBldmVyeSAxMjggYml0cykuCi1jbGFzcyBJc29DZWxsU2V0IDogcHVibGljIFBhY2tlZFJh
d1NlbnRpbmVsTm9kZTxJc29DZWxsU2V0PiB7CitjbGFzcyBJc29DZWxsU2V0IGZpbmFsIDogcHVi
bGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxJc29DZWxsU2V0PiB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoSXNvQ2VsbFNldCk7CisgICAgV1RGX01BS0VfTk9OTU9WQUJMRShJc29DZWxsU2V0
KTsKIHB1YmxpYzoKICAgICBJc29DZWxsU2V0KElzb1N1YnNwYWNlJiBzdWJzcGFjZSk7CiAgICAg
fklzb0NlbGxTZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBmMTIzNTU3ODIw
YzM0Zjg3NjJjMThhOTUwM2YzYTk2ZjdiNGM2NDEyLi5lZDhmYjBmNTNlNTdhNWE1MDJmMWNhMjc2
MDU0NjcwOTAwZThiZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMTUsOCAr
MjE1LDYgQEAgdm9pZCBKSVQ6OmVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJS
ZWcgcmVzdWx0KQogICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvbkV4ZWN1
dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ29uc3RydWN0KCkpLCByZXN1bHQpOwogICAgIGVs
c2UKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpv
ZmZzZXRPZkNvZGVCbG9ja0ZvckNhbGwoKSksIHJlc3VsdCk7Ci0KLSAgICBsb2FkUHRyKEFkZHJl
c3MocmVzdWx0LCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpvZmZzZXRPZkNvZGVCbG9jaygp
KSwgcmVzdWx0KTsKICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVzdWx0LCBDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2spOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAzZTJj
NmRmNjBhNDc4Y2ExMDlhYWRhOGMzM2Q2MGM5OTRiNWQzYzAxLi4xZmRiNGE1N2Q1OTRiZWVhNmVi
YjgwYWE2OTdiZGFkNDNmOTBmODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNDkzLDcgKzE0OTMsNiBAQCBtYWNy
byBmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCiAgICAgbG9h
ZHAgKEZ1bmN0aW9uUmFyZURhdGE6Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5jdGlv
bjo6cmFyZURhdGFUYWcpKVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCiAuaXNFeGVj
dXRhYmxlOgogICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxs
W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBsb2FkcCBFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlOjptX2NvZGVCbG9ja1t0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVy
CiBlbmQKIAogbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0
UmVnaXN0ZXIpCkBAIC0xNTA3LDcgKzE1MDYsNiBAQCBtYWNybyBmdW5jdGlvbkZvckNvbnN0cnVj
dENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKICAgICBsb2FkcCAoRnVuY3Rpb25SYXJl
RGF0YTo6bV9leGVjdXRhYmxlIC0gKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykp
W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKIC5pc0V4ZWN1dGFibGU6CiAgICAgbG9h
ZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdp
c3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgbG9hZHAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6bV9jb2RlQmxvY2tbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgogZW5kCiAKIG1h
Y3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3Bw
CmluZGV4IGNhMDBmYjFjNmI2ZGE2OTc2ZmNiMTZlMTY3ZWY2ODI0MTZlMTcxNjAuLjlkNjg1YTc1
MmM2NWY4NWI1NTg2ZGY4ZTUzMDBkMGFjZTYzZDZhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTYzLDcg
KzYzLDcgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxDb2RlQmxvY2suc2V0KHZt
LCBleGVjdXRhYmxlLCB1bmxpbmtlZEV2YWxDb2RlKTsKKyAgICBleGVjdXRhYmxlLT5tX3VubGlu
a2VkQ29kZUJsb2NrLnNldCh2bSwgZXhlY3V0YWJsZSwgdW5saW5rZWRFdmFsQ29kZSk7CiAKICAg
ICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V2YWxFeGVjdXRhYmxlLmNwcAppbmRleCBkZDg0OTMzODJmZjYxNDEwYmJlZWVkZDBiYmUy
NzdkYzUyMDhlNjJmLi5iODg0OWNjZTExNTdjNmQxZTM0MWVhZWZkZmExZjQxYjhjMmVmMTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3Bw
CkBAIC01Niw4ICs1Niw2IEBAIHZvaWQgRXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBs
KEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICBFdmFsRXhlY3V0YWJsZSogdGhp
c09iamVjdCA9IGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2V2YWxDb2RlQmxvY2spOwogICAgIGlmIChUZW1wbGF0ZU9iamVjdE1hcCogbWFwID0gdGhp
c09iamVjdC0+bV90ZW1wbGF0ZU9iamVjdE1hcC5nZXQoKSkgewogICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgdGhpc09iamVjdC0+Y2VsbExvY2soKSB9OwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5
IDogKm1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxF
eGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJs
ZS5oCmluZGV4IDY2MzA1NGZhNTY3YjNkYWZiZjEwM2QyODU5NzNhY2Q4MTU0YmQyNzYuLmU4NWEz
YTdhMzVmZWZjYjNhNjYyYjBmZjBjODRkZDBhYTEyODk5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaApAQCAtMjUsNyArMjUsNiBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNp
bmNsdWRlICJHbG9iYWxFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRFdmFsQ29kZUJs
b2NrLmgiCiAKQEAgLTM5LDkgKzM4LDE0IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVibGlj
IEdsb2JhbEV4ZWN1dGFibGUgewogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
ICAgICAKLSAgICBFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2soKQorICAgIEV2YWxDb2RlQmxvY2sq
IGNvZGVCbG9jaygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEV2
YWxDb2RlQmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9ldmFsQ29k
ZUJsb2NrLmdldCgpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RXZhbENvZGVCbG9j
ayo+KEJhc2U6OmNvZGVCbG9jaygpKTsKKyAgICB9CisKKyAgICBVbmxpbmtlZEV2YWxDb2RlQmxv
Y2sqIHVubGlua2VkQ29kZUJsb2NrKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8VW5saW5rZWRFdmFsQ29kZUJsb2NrKj4oQmFzZTo6dW5saW5rZWRDb2RlQmxvY2so
KSk7CiAgICAgfQogCiAgICAgUmVmPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQpAQCAtNjIs
MTAgKzY2LDEwIEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVibGljIEdsb2JhbEV4ZWN1dGFi
bGUgewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkg
eyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9Ci0gICAg
dW5zaWduZWQgbnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKSB7IHJldHVybiBtX3VubGlu
a2VkRXZhbENvZGVCbG9jay0+bnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKTsgfQotICAg
IHVuc2lnbmVkIG51bVRvcExldmVsRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRF
dmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQotICAgIGJvb2wgYWxsb3dE
aXJlY3RFdmFsQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+
YWxsb3dEaXJlY3RFdmFsQ2FjaGUoKTsgfQorICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsg
cmV0dXJuIHVubGlua2VkQ29kZUJsb2NrKCktPm51bVZhcmlhYmxlcygpOyB9CisgICAgdW5zaWdu
ZWQgbnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKSB7IHJldHVybiB1bmxpbmtlZENvZGVC
bG9jaygpLT5udW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpOyB9CisgICAgdW5zaWduZWQg
bnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2soKS0+
bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KKyAgICBib29sIGFsbG93RGlyZWN0RXZhbENhY2hl
KCkgY29uc3QgeyByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2soKS0+YWxsb3dEaXJlY3RFdmFsQ2Fj
aGUoKTsgfQogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXI+KG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOyB9CiAgICAgUHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJl
bWVudCk7IH0KICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAo
Vk0mKTsKQEAgLTgyLDggKzg2LDYgQEAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgR2xv
YmFsRXhlY3V0YWJsZSB7CiAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciA6IDE7CiAgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAKLSAg
ICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9ldmFsQ29kZUJsb2Nr
OwotICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+IG1fdW5saW5rZWRFdmFs
Q29kZUJsb2NrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0ZU9iamVjdE1hcD4gbV90ZW1w
bGF0ZU9iamVjdE1hcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGQ4MWFjNjA2Zjc0ZDg1MmI4ZGJlZTkz
ZGRkNTY3NjU4YmUwNzQ5OTQuLmMyMTkzOTkzYmFjY2JiMWRlZGUyNDczZTllNjY1ZDgwZTQzNDE4
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhl
Y3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcApAQCAtMjQsMTAgKzI0LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKKyNpbmNsdWRlICJGdW5jdGlv
bkV4ZWN1dGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25PdmVycmlkZXMuaCIKKyNp
bmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTUsMjcgKzU4LDI2IEBAIHZvaWQgRnVuY3Rpb25F
eGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6YmFzZWxpbmVDb2RlQmxvY2tGb3IoQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQogewotICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2U7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBudWxscHRyOwogICAgIGlmIChraW5kID09IENvZGVGb3JD
YWxsKQotICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpOworICAgICAgICBj
b2RlQmxvY2sgPSBjb2RlQmxvY2tGb3JDYWxsKCk7CiAgICAgZWxzZSB7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7Ci0gICAgICAgIGVkZ2UgPSBtX2Nv
ZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKTsKKyAgICAgICAgY29kZUJsb2NrID0gY29kZUJsb2Nr
Rm9yQ29uc3RydWN0KCk7CiAgICAgfQotICAgIGlmICghZWRnZSkKKyAgICBpZiAoIWNvZGVCbG9j
aykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0
aW9uQ29kZUJsb2NrKj4oZWRnZS0+Y29kZUJsb2NrKCktPmJhc2VsaW5lQWx0ZXJuYXRpdmUoKSk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4oY29kZUJsb2NrLT5i
YXNlbGluZUFsdGVybmF0aXZlKCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgog
dm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwg
VmlzaXRvciYgdmlzaXRvcikKIHsKKyAgICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7CiAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdG9wTGV2ZWxFeGVjdXRhYmxlKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNhbGwpOwotICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0KTsKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkRXhlY3V0YWJsZSk7CiAgICAgaWYgKFJhcmVE
YXRhKiByYXJlRGF0YSA9IHRoaXNPYmplY3QtPm1fcmFyZURhdGEuZ2V0KCkpIHsKICAgICAgICAg
dmlzaXRvci5hcHBlbmQocmFyZURhdGEtPm1fY2FjaGVkUG9seVByb3RvU3RydWN0dXJlSUQpOwpA
QCAtODYsMTAgKzg4LDM5IEBAIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVu
SW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgICAgICAgICAgdmlz
aXRvci5hcHBlbmQoZW50cnkudmFsdWUpOwogICAgICAgICB9CiAgICAgfQorCisgICAgLy8gU2lu
Y2UgRnVuY3Rpb25FeGVjdXRhYmxlJ3MgZmluYWxpemVyIGFsd2F5cyBuZWVkcyB0byBiZSBydW4s
IHdlIGRvIG5vdCB0cmFjayBpdCB2aWEgZmluYWxpemVyU2V0LgorICAgIGJvb2wgc2hvdWxkS2Vl
cEluQ29uc3RyYWludFNldCA9IGZhbHNlOworICAgIGlmIChhdXRvKiBjb2RlQmxvY2sgPSB0aGlz
T2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCkpCisgICAgICAgIHNob3VsZEtlZXBJbkNv
bnN0cmFpbnRTZXQgfD0gdmlzaXRDb2RlQmxvY2tFZGdlKHZpc2l0b3IsIGNvZGVCbG9jayk7Cisg
ICAgaWYgKGF1dG8qIGNvZGVCbG9jayA9IHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0LmdldCgpKQorICAgICAgICBzaG91bGRLZWVwSW5Db25zdHJhaW50U2V0IHw9IHZpc2l0Q29k
ZUJsb2NrRWRnZSh2aXNpdG9yLCBjb2RlQmxvY2spOworICAgIGlmIChzaG91bGRLZWVwSW5Db25z
dHJhaW50U2V0KQorICAgICAgICB2bS5oZWFwLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0
Lm91dHB1dENvbnN0cmFpbnRzU2V0LmFkZCh0aGlzT2JqZWN0KTsKIH0KIAogREVGSU5FX1ZJU0lU
X0NISUxEUkVOKEZ1bmN0aW9uRXhlY3V0YWJsZSk7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0
b3I+Cit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50c0ltcGwo
SlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFZNJiB2bSA9IHZpc2l0b3Iu
dm0oKTsKKyAgICBhdXRvKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGNlbGwpOworICAgIGJvb2wgc2hvdWxkS2VlcEluQ29uc3RyYWludFNldCA9IGZhbHNlOworICAg
IGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvckNhbGwo
KSkgeworICAgICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrKSkKKyAgICAgICAg
ICAgIHNob3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQgfD0gcnVuQ29uc3RyYWludChOb0xvY2tpbmdO
ZWNlc3NhcnksIHZpc2l0b3IsIGNvZGVCbG9jayk7CisgICAgfQorICAgIGlmIChDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpKSB7CisgICAg
ICAgIGlmICghdmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2spKQorICAgICAgICAgICAgc2hvdWxk
S2VlcEluQ29uc3RyYWludFNldCB8PSBydW5Db25zdHJhaW50KE5vTG9ja2luZ05lY2Vzc2FyeSwg
dmlzaXRvciwgY29kZUJsb2NrKTsKKyAgICB9CisgICAgaWYgKCFzaG91bGRLZWVwSW5Db25zdHJh
aW50U2V0KQorICAgICAgICB2bS5oZWFwLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0Lm91
dHB1dENvbnN0cmFpbnRzU2V0LnJlbW92ZShleGVjdXRhYmxlKTsKK30KKworREVGSU5FX1ZJU0lU
X09VVFBVVF9DT05TVFJBSU5UUyhGdW5jdGlvbkV4ZWN1dGFibGUpOworCiBGdW5jdGlvbkV4ZWN1
dGFibGUqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAgICAgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCAKICAgICBKU09iamVjdComIGV4Y2VwdGlvbiwgaW50IG92ZXJyaWRlTGlu
ZU51bWJlciwgc3RkOjpvcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJz
RW5kUG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uRXhlY3V0YWJsZS5oCmluZGV4IDBhOTEyYWU1ZWY3MmQwMTU4ZWJkNWNlZGNlNTYyNGI2MTUx
OTJhYmUuLjM3ZTBjNWRiNjFhY2E2NDJlNWVmZGY2ODYxMmYwMjMxYzQ1OGZmZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCkBA
IC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgpAQCAtNjksMzQgKzY4LDMx
IEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRh
YmxlIHsKICAgICAvLyBSZXR1cm5zIGVpdGhlciBjYWxsIG9yIGNvbnN0cnVjdCBieXRlY29kZS4g
VGhpcyBjYW4gYmUgYXBwcm9wcmlhdGUKICAgICAvLyBmb3IgYW5zd2VyaW5nIHF1ZXN0aW9ucyB0
aGF0IHRoYXQgZG9uJ3QgdmFyeSBiZXR3ZWVuIGNhbGwgYW5kIGNvbnN0cnVjdCAtLQogICAgIC8v
IGZvciBleGFtcGxlLCBhcmd1bWVudHNSZWdpc3RlcigpLgotICAgIEZ1bmN0aW9uQ29kZUJsb2Nr
KiBlaXRoZXJDb2RlQmxvY2soKQorICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBlaXRoZXJDb2RlQmxv
Y2soKSBjb25zdAogICAgIHsKLSAgICAgICAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRn
ZTsKLSAgICAgICAgaWYgKG1fY29kZUJsb2NrRm9yQ2FsbCkKLSAgICAgICAgICAgIGVkZ2UgPSBt
X2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVkZ2Ug
PSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKTsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnVud3Jh
cChlZGdlKSk7CisgICAgICAgIGlmIChhdXRvKiByZXN1bHQgPSBjb2RlQmxvY2tGb3JDYWxsKCkp
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4gY29kZUJsb2NrRm9y
Q29uc3RydWN0KCk7CiAgICAgfQogICAgICAgICAKICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2Fs
bCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gISFtX2NvZGVCbG9ja0ZvckNhbGw7Cisg
ICAgICAgIHJldHVybiAhIWNvZGVCbG9ja0ZvckNhbGwoKTsKICAgICB9CiAKLSAgICBGdW5jdGlv
bkNvZGVCbG9jayogY29kZUJsb2NrRm9yQ2FsbCgpCisgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNv
ZGVCbG9ja0ZvckNhbGwoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxGdW5jdGlvbkNvZGVCbG9jayo+KEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnVud3JhcCht
X2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxG
dW5jdGlvbkNvZGVCbG9jayo+KG1fY29kZUJsb2NrRm9yQ2FsbC5nZXQoKSk7CiAgICAgfQogCiAg
ICAgYm9vbCBpc0dlbmVyYXRlZEZvckNvbnN0cnVjdCgpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gISFtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKKyAgICAgICAgcmV0dXJuICEhY29kZUJs
b2NrRm9yQ29uc3RydWN0KCk7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVC
bG9ja0ZvckNvbnN0cnVjdCgpCisgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9ja0ZvckNv
bnN0cnVjdCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEZ1bmN0
aW9uQ29kZUJsb2NrKj4oRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dW53cmFwKG1fY29kZUJs
b2NrRm9yQ29uc3RydWN0LmdldCgpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVu
Y3Rpb25Db2RlQmxvY2sqPihtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKSk7CiAgICAgfQog
ICAgICAgICAKICAgICBib29sIGlzR2VuZXJhdGVkRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKQEAgLTEyMiw2ICsxMTgsOCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVC
bG9ja0ZvcihraW5kKTsKICAgICB9CiAKKyAgICBGdW5jdGlvbkNvZGVCbG9jayogcmVwbGFjZUNv
ZGVCbG9ja1dpdGgoVk0mLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBDb2RlQmxvY2sqKTsKKwog
ICAgIFJlZlB0cjxUeXBlU2V0PiByZXR1cm5TdGF0ZW1lbnRUeXBlU2V0KCkgCiAgICAgewogICAg
ICAgICBSYXJlRGF0YSYgcmFyZURhdGEgPSBlbnN1cmVSYXJlRGF0YSgpOwpAQCAtMTYyLDYgKzE2
MCw3IEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRhYmxlIHsKICAgICBTb3VyY2VDb2RlIGNsYXNzU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV91
bmxpbmtlZEV4ZWN1dGFibGUtPmNsYXNzU291cmNlKCk7IH0KIAogICAgIERFQ0xBUkVfVklTSVRf
Q0hJTERSRU47CisgICAgREVDTEFSRV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlOVFM7CiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKICAgICB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oRnVuY3Rpb25FeGVj
dXRhYmxlVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwpAQCAtMzMxLDggKzMzMCw4IEBA
IGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxl
IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CiAgICAgV3JpdGVC
YXJyaWVyPFNjcmlwdEV4ZWN1dGFibGU+IG1fdG9wTGV2ZWxFeGVjdXRhYmxlOwogICAgIFdyaXRl
QmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV91bmxpbmtlZEV4ZWN1dGFibGU7
Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fY29kZUJsb2Nr
Rm9yQ2FsbDsKLSAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9j
b2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CisgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gbV9jb2Rl
QmxvY2tGb3JDYWxsOworICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrRm9y
Q29uc3RydWN0OwogICAgIEluZmVycmVkVmFsdWU8SlNGdW5jdGlvbj4gbV9zaW5nbGV0b247CiAg
ICAgQm94PElubGluZVdhdGNocG9pbnRTZXQ+IG1fcG9seVByb3RvV2F0Y2hwb2ludDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1
dGFibGVJbmxpbmVzLmgKaW5kZXggYzlhMGIxMjI0MDQzMzI5NzFhMTZjMjhhNmQxNWY1NGVmM2Y1
MGQ4Yy4uNDczZmZjMzBjZjk5Yjk5MmU2ZmIwZmYzNmMxMDU2ZmUzOTcyZDEwNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZUlubGluZXMuaApAQCAtMzMsOSArMzMsMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiBpbmxpbmUgdm9p
ZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKIHsK
ICAgICBtX3NpbmdsZXRvbi5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSh2bSk7CisgICAgZmluYWxp
emVDb2RlQmxvY2tFZGdlKHZtLCBtX2NvZGVCbG9ja0ZvckNhbGwpOworICAgIGZpbmFsaXplQ29k
ZUJsb2NrRWRnZSh2bSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOworICAgIHZtLmhlYXAuZnVu
Y3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQub3V0cHV0Q29uc3RyYWludHNTZXQucmVtb3ZlKHRo
aXMpOwogfQogCi1KU1N0cmluZyogRnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0cmluZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoraW5saW5lIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlv
bkV4ZWN1dGFibGU6OnJlcGxhY2VDb2RlQmxvY2tXaXRoKFZNJiB2bSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kLCBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jaykKK3sKKyAgICBpZiAoa2luZCA9
PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBGdW5jdGlvbkNvZGVCbG9jayogb2xkQ29kZUJsb2Nr
ID0gY29kZUJsb2NrRm9yQ2FsbCgpOworICAgICAgICBtX2NvZGVCbG9ja0ZvckNhbGwuc2V0KHZt
LCB0aGlzLCBuZXdDb2RlQmxvY2spOworICAgICAgICByZXR1cm4gb2xkQ29kZUJsb2NrOworICAg
IH0KKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBGdW5jdGlvbkNv
ZGVCbG9jayogb2xkQ29kZUJsb2NrID0gY29kZUJsb2NrRm9yQ29uc3RydWN0KCk7CisgICAgbV9j
b2RlQmxvY2tGb3JDb25zdHJ1Y3Quc2V0KHZtLCB0aGlzLCBuZXdDb2RlQmxvY2spOworICAgIHJl
dHVybiBvbGRDb2RlQmxvY2s7Cit9CisKK2lubGluZSBKU1N0cmluZyogRnVuY3Rpb25FeGVjdXRh
YmxlOjp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFJhcmVE
YXRhJiByYXJlRGF0YSA9IGVuc3VyZVJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJlRGF0YS5tX2Fz
U3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFs
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFeGVj
dXRhYmxlLmNwcAppbmRleCA3NWU4NGIzOGZmNzI3YjMyYzhlYjAwMTE2YTBiMWQwYWQ4NDBiZmVk
Li5kMjFhMzNmZDRkMjI5ZDJmMjk1MGFmMGEyMTk2NDkzOTZlZjk2YTExIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmNwcApAQCAtMjYs
MTAgKzI2LDU4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR2xvYmFsRXhlY3V0
YWJsZS5oIgogCisjaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNsdWRlICJKU0Nl
bGxJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gR2xvYmFs
RXhlY3V0YWJsZTo6c19pbmZvID0geyAiR2xvYmFsRXhlY3V0YWJsZSJfcywgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHbG9iYWxFeGVjdXRhYmxl
KSB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgordm9pZCBHbG9iYWxFeGVjdXRhYmxl
Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgYXV0byogZXhlY3V0YWJsZSA9IGpzQ2FzdDxHbG9iYWxFeGVjdXRhYmxlKj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhleGVjdXRhYmxlLCBpbmZvKCkpOworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4oZXhlY3V0YWJsZSwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBl
bmQoZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jayk7CisKKyAgICBpZiAoYXV0byogY29k
ZUJsb2NrID0gZXhlY3V0YWJsZS0+Y29kZUJsb2NrKCkpIHsKKyAgICAgICAgaWYgKCF2aXNpdG9y
LmlzTWFya2VkKGNvZGVCbG9jaykpCisgICAgICAgICAgICBIZWFwOjpTY3JpcHRFeGVjdXRhYmxl
U3BhY2VBbmRTZXQ6OmZpbmFsaXplclNldEZvcigqZXhlY3V0YWJsZS0+c3Vic3BhY2UoKSkuYWRk
KGV4ZWN1dGFibGUpOworICAgICAgICBpZiAodmlzaXRDb2RlQmxvY2tFZGdlKHZpc2l0b3IsIGNv
ZGVCbG9jaykpCisgICAgICAgICAgICBIZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6
Om91dHB1dENvbnN0cmFpbnRzU2V0Rm9yKCpleGVjdXRhYmxlLT5zdWJzcGFjZSgpKS5hZGQoZXhl
Y3V0YWJsZSk7CisgICAgfQorfQorCitERUZJTkVfVklTSVRfQ0hJTERSRU4oR2xvYmFsRXhlY3V0
YWJsZSk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Cit2b2lkIEdsb2JhbEV4ZWN1dGFi
bGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHNJbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBhdXRvKiBleGVjdXRhYmxlID0ganNDYXN0PEdsb2JhbEV4ZWN1dGFibGUq
PihjZWxsKTsKKyAgICBpZiAoQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2Rl
QmxvY2soKSkgeworICAgICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrKSkgewor
ICAgICAgICAgICAgaWYgKHJ1bkNvbnN0cmFpbnQoTm9Mb2NraW5nTmVjZXNzYXJ5LCB2aXNpdG9y
LCBjb2RlQmxvY2spKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KyAgICBIZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6Om91dHB1dENvbnN0cmFpbnRz
U2V0Rm9yKCpleGVjdXRhYmxlLT5zdWJzcGFjZSgpKS5yZW1vdmUoZXhlY3V0YWJsZSk7Cit9CisK
K0RFRklORV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlOVFMoR2xvYmFsRXhlY3V0YWJsZSk7CisKK0Nv
ZGVCbG9jayogR2xvYmFsRXhlY3V0YWJsZTo6cmVwbGFjZUNvZGVCbG9ja1dpdGgoVk0mIHZtLCBD
b2RlQmxvY2sqIG5ld0NvZGVCbG9jaykKK3sKKyAgICBDb2RlQmxvY2sqIG9sZENvZGVCbG9jayA9
IGNvZGVCbG9jaygpOworICAgIG1fY29kZUJsb2NrLnNldCh2bSwgdGhpcywgbmV3Q29kZUJsb2Nr
KTsKKyAgICByZXR1cm4gb2xkQ29kZUJsb2NrOworfQorCit2b2lkIEdsb2JhbEV4ZWN1dGFibGU6
OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sKKyAgICBmaW5hbGl6ZUNvZGVCbG9j
a0VkZ2Uodm0sIG1fY29kZUJsb2NrKTsKKyAgICBIZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VB
bmRTZXQ6Om91dHB1dENvbnN0cmFpbnRzU2V0Rm9yKCpzdWJzcGFjZSgpKS5yZW1vdmUodGhpcyk7
CisgICAgSGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0OjpmaW5hbGl6ZXJTZXRGb3Io
KnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmgKaW5kZXgg
OTI3NGM5Y2QzZDZkMjEyYmE4YjY1NmJhM2M4MjAzMDUxNTU2MGI1NC4uM2QxZGU5ZTBhY2Y1ODZi
NTEyYzFmY2ZlMzdmYmQ5ZTFiZjE0Yzk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDgsMTIgKzQ3LDMy
IEBAIGNsYXNzIEdsb2JhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAg
ICAgICAgIEFTU0VSVChlbmRDb2x1bW4gIT0gVUlOVF9NQVgpOwogICAgIH0KIAorICAgIERFQ0xB
UkVfVklTSVRfQ0hJTERSRU47CisgICAgREVDTEFSRV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlOVFM7
CisKKyAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJik7CisKIHByb3RlY3RlZDoK
KyAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKICAgICBHbG9iYWxFeGVjdXRhYmxl
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3Jk
aW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgSW50cmluc2lj
IGludHJpbnNpYykKICAgICAgICAgOiBCYXNlKHN0cnVjdHVyZSwgdm0sIHNvdXJjZUNvZGUsIGlz
SW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUxleGljYWxGZWF0dXJlIDogTm9MZXhpY2FsRmVh
dHVyZXMsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0LCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgaW50cmluc2ljKQogICAgIHsK
ICAgICB9CiAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9jb2RlQmxvY2suZ2V0KCk7CisgICAgfQorCisgICAgVW5saW5rZWRDb2RlQmxv
Y2sqIHVubGlua2VkQ29kZUJsb2NrKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Vu
bGlua2VkQ29kZUJsb2NrLmdldCgpOworICAgIH0KKworICAgIENvZGVCbG9jayogcmVwbGFjZUNv
ZGVCbG9ja1dpdGgoVk0mLCBDb2RlQmxvY2sqKTsKKworICAgIFdyaXRlQmFycmllcjxDb2RlQmxv
Y2s+IG1fY29kZUJsb2NrOworICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZENvZGVCbG9jaz4gbV91
bmxpbmtlZENvZGVCbG9jazsKICAgICBpbnQgbV9sYXN0TGluZSB7IC0xIH07CiAgICAgdW5zaWdu
ZWQgbV9lbmRDb2x1bW4geyBVSU5UX01BWCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggNWJj
NTg4MmIwMDJjMjg1NjY1MzUyNmM0MDRkZDljZjE1NDQ1NjVjNi4uZTllMWRlMzVhMDViM2I0YzMz
ODY3N2Y1YzU2ODMxOTIzOGY4ODljNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTY1LDcgKzY1LDcg
QEAgaW5saW5lIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZUltcGwoSlNHbG9iYWxPYmplY3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxDb2RlQmxvY2suc2V0KHZtLCBleGVj
dXRhYmxlLCB1bmxpbmtlZEV2YWxDb2RlKTsKKyAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkQ29k
ZUJsb2NrLnNldCh2bSwgZXhlY3V0YWJsZSwgdW5saW5rZWRFdmFsQ29kZSk7CiAKICAgICByZXR1
cm4gZXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKaW5kZXggYTM3NmFmNWVlYTBkZTZiNTE3MGM0ZmI0NDczNzMwZDI1ODMzMWM1Mi4u
YzliNzE2MDcwYmJmZDBhYTBiNGI3Y2M0ZWUyYWI4NzViZTlmNTRlNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJDYXRjaFNjb3BlLmgiCiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGFiN2JlY2Q5YzY3YTA4YzJm
ZTI1OGY3ZGI5MTA1NGYyYmFkNzlkMTEuLjA4MTBlMWQyZDE2NTMwZDBkODYyNTRkMDBjMzQ3NWY2
ZTFhNDU4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgU3luY2hyb25vdXNuZXNzIEpTTW9kdWxlUmVj
b3JkOjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc2NyaXAKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBTeW5jaHJvbm91c25lc3M6OlN5bmMpOwogICAg
IG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0KHZtLCB0aGlzLCBleGVjdXRhYmxlKTsKIAot
ICAgIHJldHVybiBleGVjdXRhYmxlLT51bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKS0+
aXNBc3luYygpID8gU3luY2hyb25vdXNuZXNzOjpBc3luYyA6IFN5bmNocm9ub3VzbmVzczo6U3lu
YzsKKyAgICByZXR1cm4gZXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBc3luYygp
ID8gU3luY2hyb25vdXNuZXNzOjpBc3luYyA6IFN5bmNocm9ub3VzbmVzczo6U3luYzsKIH0KIAog
dm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0yMDksNyArMjA5LDcgQEAgdm9p
ZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgTW9kdWwKICAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAgMTYt
YS1pdi4KICAgICAvLyBJbml0aWFsaXplIGhlYXAgYWxsb2NhdGVkIGZ1bmN0aW9uIGRlY2xhcmF0
aW9ucy4KICAgICAvLyBUaGV5IGNhbiBiZSBjYWxsZWQgYmVmb3JlIHRoZSBib2R5IG9mIHRoZSBt
b2R1bGUgaXMgZXhlY3V0ZWQgdW5kZXIgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgotICAgIFVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZS0+dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCk7CisgICAgVW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9jaygpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwLCBudW1iZXJPZkZ1bmN0aW9ucyA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0
aW9uRGVjbHMoKTsgaSA8IG51bWJlck9mRnVuY3Rpb25zOyArK2kpIHsKICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlID0gdW5saW5r
ZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBl
bnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQodW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUo
KS5pbXBsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCmluZGV4IDI0N2ZhYTY1ZWJjZTZlYTM5NDc2Y2My
NmVmNGQyZTUyNmQ1OWU1NjguLjgxMmMxYzc1YTU1MmQ1YjZjOTJlY2Q2M2U0NDk1MTUxZDY0YmE3
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dy
YW1FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE8KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgZXhlY3V0YWJs
ZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suc2V0KGdsb2JhbE9iamVjdC0+dm0o
KSwgZXhlY3V0YWJsZSwgdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZSk7CisgICAgZXhlY3V0YWJs
ZS0+bV91bmxpbmtlZENvZGVCbG9jay5zZXQoZ2xvYmFsT2JqZWN0LT52bSgpLCBleGVjdXRhYmxl
LCB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlKTsKIAogICAgIGV4ZWN1dGFibGUtPm1fbW9kdWxl
RW52aXJvbm1lbnRTeW1ib2xUYWJsZS5zZXQoZ2xvYmFsT2JqZWN0LT52bSgpLCBleGVjdXRhYmxl
LCBqc0Nhc3Q8U3ltYm9sVGFibGUqPih1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlLT5jb25zdGFu
dFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcih1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlLT5tb2R1
bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldCgpKSkuZ2V0KCkp
LT5jbG9uZVNjb3BlUGFydChnbG9iYWxPYmplY3QtPnZtKCkpKTsKIApAQCAtODUsOSArODUsNyBA
QCB2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwq
IGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPihjZWxsKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKTsKLSAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2spOwog
ICAgIGlmIChUZW1wbGF0ZU9iamVjdE1hcCogbWFwID0gdGhpc09iamVjdC0+bV90ZW1wbGF0ZU9i
amVjdE1hcC5nZXQoKSkgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdGhpc09iamVjdC0+Y2Vs
bExvY2soKSB9OwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogKm1hcCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5o
CmluZGV4IDkyNjM1YjMyMjFiMmM1NDE0YWNhNzZkMThiOThlOGIxYWM4ZGVhMTUuLjM5YzJhYTk0
YjJjZTQ5NzBiNzVjZTgwYWJjOTUyOWM2Mjg5MzlmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtMjUs
NyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2UuaCIKICNpbmNsdWRlICJHbG9iYWxFeGVjdXRhYmxlLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNDYsOSArNDUsMTQgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOwogCi0gICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrKCkKKyAg
ICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oRXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZTo6dW53cmFwKG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSkp
OworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihC
YXNlOjpjb2RlQmxvY2soKSk7CisgICAgfQorCisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KEJhc2U6OnVubGlu
a2VkQ29kZUJsb2NrKCkpOwogICAgIH0KIAogICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRD
b2RlKCkKQEAgLTYzLDcgKzY3LDYgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAg
ICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgp
OyB9CiAgICAgYm9vbCBpc0FzeW5jKCkgY29uc3QgeyByZXR1cm4gZmVhdHVyZXMoKSAmIEF3YWl0
RmVhdHVyZTsgfQogCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFi
bGUoKSB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7IH0KQEAg
LTc4LDkgKzgxLDcgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAKICAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOwogCi0g
ICAgV3JpdGVCYXJyaWVyPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4gbV91bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiAgICAgV3JpdGVCYXJyaWVyPFN5bWJvbFRhYmxlPiBt
X21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGU7Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2U+IG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VGVtcGxhdGVPYmplY3RNYXA+IG1fdGVtcGxhdGVPYmplY3RNYXA7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJs
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5j
cHAKaW5kZXggNzMyOWZlMjcwMTg2ODRhYjA1YzZhNDc3NmZhZDI5NmU1ODI4OWQ2Yy4uY2U4MjQy
Zjk4MzVmYjYzY2FiZmExNDc3ZGU5YTIyM2ZiMGFmOTgxOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcApAQCAtMTUwLDggKzE1
MCw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3Bl
cnRpZXMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAgfQogICAgIH0KIAotCi0gICAg
bV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suc2V0KHZtLCB0aGlzLCB1bmxpbmtlZENvZGVCbG9j
ayk7CisgICAgbV91bmxpbmtlZENvZGVCbG9jay5zZXQodm0sIHRoaXMsIHVubGlua2VkQ29kZUJs
b2NrKTsKIAogICAgIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyIG9wdGltaXplcih2bSwgZ2xv
YmFsT2JqZWN0KTsKIApAQCAtMjE2LDggKzIxNSw2IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6
OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICBQ
cm9ncmFtRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+
KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKTsKLSAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb2dyYW1Db2RlQmxvY2spOwogICAgIGlm
IChUZW1wbGF0ZU9iamVjdE1hcCogbWFwID0gdGhpc09iamVjdC0+bV90ZW1wbGF0ZU9iamVjdE1h
cC5nZXQoKSkgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdGhpc09iamVjdC0+Y2VsbExvY2so
KSB9OwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogKm1hcCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IDUxMzQ5OTAyMDQw
NzgxM2M1OWUzMjg4YTE4ZGYyOWJjMTExYmZlYzIuLjQzOTRlN2ZmY2I2OGIyMTUxN2M4OWNjYWIy
OGE4MzU2NWY5MmFjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRlICJHbG9iYWxF
eGVjdXRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTYsOSArNTUsMTQgQEAgY2xhc3Mg
UHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgUHJvZ3JhbUNvZGVCbG9jayog
Y29kZUJsb2NrKCkKKyAgICBQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4oRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZTo6dW53cmFwKG1fcHJvZ3JhbUNvZGVCbG9jay5nZXQoKSkpOwor
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFByb2dyYW1Db2RlQmxvY2sqPihCYXNlOjpjb2Rl
QmxvY2soKSk7CisgICAgfQorCisgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jayo+KEJhc2U6OnVubGlua2VkQ29kZUJsb2NrKCkpOwogICAg
IH0KIAogICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKQEAgLTgzLDggKzg3LDYg
QEAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgR2xvYmFsRXhlY3V0YWJs
ZSB7CiAKICAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOwogCi0gICAgV3JpdGVCYXJyaWVyPFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4gbV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7Ci0gICAg
V3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fcHJvZ3JhbUNvZGVCbG9j
azsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplY3RNYXA+IG1fdGVtcGxhdGVPYmpl
Y3RNYXA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuY3BwCmluZGV4IGM2YTllYWI2NzE0Y2U0MmM0MTA4N2JkYjA4ZmM5MjE3NGFj
OGVjYmYuLmI5NDIwNGUxY2E0Y2M4N2U3NTI1ZDJmNWFlZDA3YWIyYjhiNzM4NTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFdmFsQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKKyNpbmNsdWRlICJGdW5j
dGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR2xvYmFsRXhlY3V0YWJsZS5oIgog
I2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklULmgiCkBAIC04Niwy
MCArODcsMjAgQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpjbGVhckNvZGUoSXNvQ2VsbFNldCYg
Y2xlYXJhYmxlQ29kZVNldCkKICAgICB9CiAgICAgY2FzZSBFdmFsRXhlY3V0YWJsZVR5cGU6IHsK
ICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxFdmFsRXhl
Y3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2suY2xl
YXIoKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxDb2RlQmxvY2suY2xlYXIo
KTsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgZXhl
Y3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jay5jbGVhcigpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU6IHsKICAgICAgICAgUHJvZ3JhbUV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KHRo
aXMpOwotICAgICAgICBleGVjdXRhYmxlLT5tX3Byb2dyYW1Db2RlQmxvY2suY2xlYXIoKTsKLSAg
ICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suY2xlYXIoKTsKKyAg
ICAgICAgZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgZXhlY3V0YWJs
ZS0+bV91bmxpbmtlZENvZGVCbG9jay5jbGVhcigpOwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgY2FzZSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGU6IHsKICAgICAgICAgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2Rl
QmxvY2suY2xlYXIoKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2suY2xl
YXIoKTsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jay5jbGVhcigpOwog
ICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuY2xlYXIo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTA4LDcgKzEwOSw3IEBAIHZvaWQgU2NyaXB0
RXhlY3V0YWJsZTo6Y2xlYXJDb2RlKElzb0NlbGxTZXQmIGNsZWFyYWJsZUNvZGVTZXQpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAotICAgIEFTU0VSVCgmSGVhcDo6U3BhY2VBbmRTZXQ6OnNldEZv
cigqc3Vic3BhY2UoKSkgPT0gJmNsZWFyYWJsZUNvZGVTZXQpOworICAgIEFTU0VSVCgmSGVhcDo6
U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0OjpjbGVhcmFibGVDb2RlU2V0Rm9yKCpzdWJzcGFj
ZSgpKSA9PSAmY2xlYXJhYmxlQ29kZVNldCk7CiAgICAgY2xlYXJhYmxlQ29kZVNldC5yZW1vdmUo
dGhpcyk7CiB9CiAKQEAgLTEzMSw4ICsxMzIsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omlu
c3RhbGxDb2RlKFZNJiB2bSwgQ29kZUJsb2NrKiBnZW5lcmljQ29kZUJsb2NrLCBDb2RlVHlwZQog
ICAgICAgICAKICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOwogICAgICAgICAK
LSAgICAgICAgb2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZGVhY3Rp
dmF0ZUFuZFVud3JhcChleGVjdXRhYmxlLT5tX3Byb2dyYW1Db2RlQmxvY2suZ2V0KCkpOwotICAg
ICAgICBleGVjdXRhYmxlLT5tX3Byb2dyYW1Db2RlQmxvY2suc2V0TWF5QmVOdWxsKHZtLCB0aGlz
LCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5kQWN0aXZhdGUoY29kZUJsb2NrKSk7
CisgICAgICAgIG9sZENvZGVCbG9jayA9IGV4ZWN1dGFibGUtPnJlcGxhY2VDb2RlQmxvY2tXaXRo
KHZtLCBjb2RlQmxvY2spOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE0Miw4ICsxNDIs
NyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2bSwgQ29kZUJsb2Nr
KiBnZW5lcmljQ29kZUJsb2NrLCBDb2RlVHlwZQogCiAgICAgICAgIEFTU0VSVChraW5kID09IENv
ZGVGb3JDYWxsKTsKIAotICAgICAgICBvbGRDb2RlQmxvY2sgPSBFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlOjpkZWFjdGl2YXRlQW5kVW53cmFwKGV4ZWN1dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jay5nZXQoKSk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVC
bG9jay5zZXRNYXlCZU51bGwodm0sIHRoaXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6Ondy
YXBBbmRBY3RpdmF0ZShjb2RlQmxvY2spKTsKKyAgICAgICAgb2xkQ29kZUJsb2NrID0gZXhlY3V0
YWJsZS0+cmVwbGFjZUNvZGVCbG9ja1dpdGgodm0sIGNvZGVCbG9jayk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIApAQCAtMTUzLDggKzE1Miw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5z
dGFsbENvZGUoVk0mIHZtLCBDb2RlQmxvY2sqIGdlbmVyaWNDb2RlQmxvY2ssIENvZGVUeXBlCiAg
ICAgICAgIAogICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CiAgICAgICAgIAot
ICAgICAgICBvbGRDb2RlQmxvY2sgPSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFjdGl2
YXRlQW5kVW53cmFwKGV4ZWN1dGFibGUtPm1fZXZhbENvZGVCbG9jay5nZXQoKSk7Ci0gICAgICAg
IGV4ZWN1dGFibGUtPm1fZXZhbENvZGVCbG9jay5zZXRNYXlCZU51bGwodm0sIHRoaXMsIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3RpdmF0ZShjb2RlQmxvY2spKTsKKyAgICAg
ICAgb2xkQ29kZUJsb2NrID0gZXhlY3V0YWJsZS0+cmVwbGFjZUNvZGVCbG9ja1dpdGgodm0sIGNv
ZGVCbG9jayk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0xNjIsMTYgKzE2
MCw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUoVk0mIHZtLCBDb2RlQmxv
Y2sqIGdlbmVyaWNDb2RlQmxvY2ssIENvZGVUeXBlCiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzKTsKICAgICAg
ICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29k
ZUJsb2NrKj4oZ2VuZXJpY0NvZGVCbG9jayk7CiAgICAgICAgIAotICAgICAgICBzd2l0Y2ggKGtp
bmQpIHsKLSAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAgICAgICAgIG9sZENvZGVCbG9j
ayA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGVBbmRVbndyYXAoZXhlY3V0
YWJsZS0+bV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpKTsKLSAgICAgICAgICAgIGV4ZWN1dGFibGUt
Pm1fY29kZUJsb2NrRm9yQ2FsbC5zZXRNYXlCZU51bGwodm0sIHRoaXMsIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3RpdmF0ZShjb2RlQmxvY2spKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0gICAgICAgICAgICBvbGRDb2Rl
QmxvY2sgPSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFjdGl2YXRlQW5kVW53cmFwKGV4
ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0LmdldCgpKTsKLSAgICAgICAgICAgIGV4
ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0LnNldE1heUJlTnVsbCh2bSwgdGhpcywg
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6d3JhcEFuZEFjdGl2YXRlKGNvZGVCbG9jaykpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgb2xkQ29kZUJsb2NrID0gZXhl
Y3V0YWJsZS0+cmVwbGFjZUNvZGVCbG9ja1dpdGgodm0sIGtpbmQsIGNvZGVCbG9jayk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICB9CkBAIC0xODcsNyArMTc2LDcgQEAgdm9pZCBTY3JpcHRF
eGVjdXRhYmxlOjppbnN0YWxsQ29kZShWTSYgdm0sIENvZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9j
aywgQ29kZVR5cGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgYXV0byYgY2xlYXJhYmxl
Q29kZVNldCA9IEhlYXA6OlNwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkpOworICAgIGF1
dG8mIGNsZWFyYWJsZUNvZGVTZXQgPSBIZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6
OmNsZWFyYWJsZUNvZGVTZXRGb3IoKnN1YnNwYWNlKCkpOwogICAgIGlmIChoYXNDbGVhcmFibGVD
b2RlKHZtKSkKICAgICAgICAgY2xlYXJhYmxlQ29kZVNldC5hZGQodGhpcyk7CiAgICAgZWxzZQpA
QCAtMjI1LDIzICsyMTQsMjMgQEAgYm9vbCBTY3JpcHRFeGVjdXRhYmxlOjpoYXNDbGVhcmFibGVD
b2RlKFZNJiB2bSkgY29uc3QKIAogICAgIGlmIChzdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8oKSA9
PSBGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkgewogICAgICAgICBhdXRvKiBleGVjdXRhYmxl
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgRnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyk7Ci0gICAgICAg
IGlmIChleGVjdXRhYmxlLT5tX2NvZGVCbG9ja0ZvckNhbGwgfHwgZXhlY3V0YWJsZS0+bV9jb2Rl
QmxvY2tGb3JDb25zdHJ1Y3QpCisgICAgICAgIGlmIChleGVjdXRhYmxlLT5laXRoZXJDb2RlQmxv
Y2soKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgfSBlbHNlIGlmIChzdHJ1Y3R1
cmUodm0pLT5jbGFzc0luZm8oKSA9PSBFdmFsRXhlY3V0YWJsZTo6aW5mbygpKSB7CiAgICAgICAg
IGF1dG8qIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxjb25zdCBFdmFsRXhlY3V0YWJsZSo+KHRo
aXMpOwotICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9ldmFsQ29kZUJsb2NrIHx8IGV4ZWN1dGFi
bGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrKQorICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9j
b2RlQmxvY2sgfHwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jaykKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgfSBlbHNlIGlmIChzdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8o
KSA9PSBQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CiAgICAgICAgIGF1dG8qIGV4ZWN1dGFi
bGUgPSBzdGF0aWNfY2FzdDxjb25zdCBQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOwotICAgICAg
ICBpZiAoZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrIHx8IGV4ZWN1dGFibGUtPm1fdW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKQorICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9jb2RlQmxv
Y2sgfHwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jaykKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgfSBlbHNlIGlmIChzdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8oKSA9PSBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CiAgICAgICAgIGF1dG8qIGV4ZWN1dGFi
bGUgPSBzdGF0aWNfY2FzdDxjb25zdCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOwot
ICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrCi0gICAgICAg
ICAgICB8fCBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaworICAg
ICAgICBpZiAoZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2sKKyAgICAgICAgICAgIHx8IGV4ZWN1dGFi
bGUtPm1fdW5saW5rZWRDb2RlQmxvY2sKICAgICAgICAgICAgIHx8IGV4ZWN1dGFibGUtPm1fbW9k
dWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTI2MSwyNSArMjUwLDI1IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3
Q29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNGdW5jCiAgICAgaWYg
KGNsYXNzSW5mbyh2bSkgPT0gRXZhbEV4ZWN1dGFibGU6OmluZm8oKSkgewogICAgICAgICBFdmFs
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KHRoaXMpOwog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIWV4ZWN1dGFibGUtPm1fZXZhbENvZGVCbG9jayk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjdXRhYmxlLT5tX2NvZGVCbG9jayk7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFmdW5jdGlvbik7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBF
dmFsQ29kZUJsb2NrOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPm1fdW5saW5r
ZWRFdmFsQ29kZUJsb2NrLmdldCgpLCBzY29wZSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgRXZhbENvZGVCbG9jazo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBleGVj
dXRhYmxlLT51bmxpbmtlZENvZGVCbG9jaygpLCBzY29wZSkpOwogICAgIH0KIAogICAgIGlmIChj
bGFzc0luZm8odm0pID09IFByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKICAgICAgICAgUHJv
Z3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPih0
aGlzKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjdXRhYmxlLT5tX3Byb2dyYW1Db2RlQmxvY2spOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2spOwogICAgICAgICBS
RUxFQVNFX0FTU0VSVCghZnVuY3Rpb24pOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBleGVjdXRh
YmxlLT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUpKTsKKyAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIFByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZSh2
bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2soKSwgc2NvcGUpKTsK
ICAgICB9CiAKICAgICBpZiAoY2xhc3NJbmZvKHZtKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZTo6aW5mbygpKSB7CiAgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
ZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIWV4ZWN1dGFibGUtPm1fY29kZUJsb2NrKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IWZ1bmN0aW9uKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+bV91
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlKSk7CisgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpjcmVh
dGUodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrKCksIHNjb3Bl
KSk7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlQoY2xhc3NJbmZvKHZtKSA9PSBGdW5jdGlv
bkV4ZWN1dGFibGU6OmluZm8oKSk7CkBAIC01MzUsNCArNTI0LDc5IEBAIHVuc2lnbmVkIFNjcmlw
dEV4ZWN1dGFibGU6OmVuZENvbHVtbigpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIFZpc2l0b3I+Citib29sIFNjcmlwdEV4ZWN1dGFibGU6OnJ1bkNvbnN0cmFp
bnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZpc2l0b3ImIHZpc2l0b3IsIENv
ZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIEFTU0VSVChjb2RlQmxvY2spOworICAgIGNvZGVC
bG9jay0+cHJvcGFnYXRlVHJhbnNpdGlvbnMobG9ja2VyLCB2aXNpdG9yKTsKKyAgICBjb2RlQmxv
Y2stPmRldGVybWluZUxpdmVuZXNzKGxvY2tlciwgdmlzaXRvcik7CisgICAgcmV0dXJuICF2aXNp
dG9yLmlzTWFya2VkKGNvZGVCbG9jayk7Cit9CisKK3RlbXBsYXRlIGJvb2wgU2NyaXB0RXhlY3V0
YWJsZTo6cnVuQ29uc3RyYWludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBBYnN0cmFjdFNs
b3RWaXNpdG9yJiwgQ29kZUJsb2NrKik7Cit0ZW1wbGF0ZSBib29sIFNjcmlwdEV4ZWN1dGFibGU6
OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU2xvdFZpc2l0b3ImLCBD
b2RlQmxvY2sqKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK2Jvb2wgU2NyaXB0RXhl
Y3V0YWJsZTo6dmlzaXRDb2RlQmxvY2tFZGdlKFZpc2l0b3ImIHZpc2l0b3IsIENvZGVCbG9jayog
Y29kZUJsb2NrKQoreworICAgIEFTU0VSVChjb2RlQmxvY2spOworCisgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisKKyAgICBpZiAoY29kZUJsb2NrLT5z
aG91bGRWaXNpdFN0cm9uZ2x5KGxvY2tlciwgdmlzaXRvcikpCisgICAgICAgIHZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrKTsKKworICAgIGlmIChKSVRDb2RlOjppc09wdGltaXpp
bmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKSB7CisgICAgICAgIC8vIElmIHdlIGpldHRpc29u
IG91cnNlbHZlcyB3ZSdsbCBpbnN0YWxsIG91ciBhbHRlcm5hdGl2ZSwgc28gbWFrZSBzdXJlIHRo
YXQgaXQKKyAgICAgICAgLy8gc3Vydml2ZXMgR0MgZXZlbiBpZiB3ZSBkb24ndC4KKyAgICAgICAg
dmlzaXRvci5hcHBlbmQoY29kZUJsb2NrLT5tX2FsdGVybmF0aXZlKTsKKyAgICB9CisKKyAgICAv
LyBOT1RFOiBUaGVyZSBhcmUgdHdvIHNpZGVzIHRvIHRoaXMgY29uc3RyYWludCwgd2l0aCBkaWZm
ZXJlbnQgcmVxdWlyZW1lbnRzIGZvciBjb3JyZWN0bmVzcy4KKyAgICAvLyBCZWNhdXNlIGV2ZXJ5
dGhpbmcgaXMgdWx0aW1hdGVseSBwcm90ZWN0ZWQgd2l0aCB3ZWFrIHJlZmVyZW5jZXMgYW5kIGpl
dHRpc29uaW5nLCBpdCdzCisgICAgLy8gYWx3YXlzICJPSyIgdG8gY2xhaW0gdGhhdCBzb21ldGhp
bmcgaXMgZGVhZCBwcmVtYXR1cmVseSBhbmQgaXQncyAiT0siIHRvIGtlZXAgdGhpbmdzIGFsaXZl
LgorICAgIC8vIEJ1dCBib3RoIGNob2ljZXMgY291bGQgbGVhZCB0byBiYWQgcGVyZiAtIGVpdGhl
ciByZWNvbXAgY3ljbGVzIG9yIGxlYWtzLgorICAgIC8vCisgICAgLy8gRGV0ZXJtaW5pbmcgQ29k
ZUJsb2NrIGxpdmVuZXNzOiBUaGlzIHBhcnQgaXMgdGhlIG1vc3QgY29uc2VxdWVudGlhbC4gV2Ug
d2FudCB0byBrZWVwIHRoZQorICAgIC8vIG91dHB1dCBjb25zdHJhaW50IGFjdGl2ZSBzbyBsb25n
IGFzIHdlIHRoaW5rIHRoYXQgd2UgbWF5IHlldCBwcm92ZSB0aGF0IHRoZSBDb2RlQmxvY2sgaXMK
KyAgICAvLyBsaXZlIGJ1dCB3ZSBoYXZlbid0IGRvbmUgaXQgeWV0LgorICAgIC8vCisgICAgLy8g
TWFya2luZyBTdHJ1Y3R1cmVzIGlmIHByb2ZpdGFibGU6IEl0J3MgaW1wb3J0YW50IHRoYXQgd2Ug
ZG8gYSBwYXNzIG9mIHRoaXMuIExvZ2ljYWxseSwgdGhpcworICAgIC8vIHNlZW1zIGxpa2UgaXQg
aXMgYSBjb25zdHJhaW50IG9mIENvZGVCbG9jay4gQnV0IHdlIGhhdmUgYWx3YXlzIGZpcnN0IHJ1
biB0aGlzIGFzIGEgcmVzdWx0CisgICAgLy8gb2YgdGhlIGVkZ2UgYmVpbmcgbWFya2VkIGV2ZW4g
YmVmb3JlIHdlIGRldGVybWluZSB0aGUgbGl2ZW5lc3Mgb2YgdGhlIENvZGVCbG9jay4gVGhpcwor
ICAgIC8vIGFsbG93cyBhIENvZGVCbG9jayB0byBtYXJrIGl0c2VsZiBieSBmaXJzdCBwcm92aW5n
IHRoYXQgYWxsIG9mIHRoZSBTdHJ1Y3R1cmVzIGl0IHdlYWtseQorICAgIC8vIGRlcGVuZHMgb24g
Y291bGQgYmUgc3Ryb25nbHkgbWFya2VkLiAoVGhpcyBwYXJ0IGlzIGFsc28gY2FsbGVkIHByb3Bh
Z2F0ZVRyYW5zaXRpb25zLikKKyAgICAvLworICAgIC8vIEFzIGEgd2VpcmQgY2F2ZWF0LCB3ZSBv
bmx5IGZpeHBvaW50IHRoZSBjb25zdHJhaW50cyBzbyBsb25nIGFzIHRoZSBDb2RlQmxvY2sgaXMg
bm90IGxpdmUuCisgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlIG1heSBvdmVybG9vayBzdHJ1Y3R1
cmUgbWFya2luZyBvcHBvcnR1bml0aWVzIGNyZWF0ZWQgYnkgb3RoZXIgbWFya2luZworICAgIC8v
IHRoYXQgaGFwcGVucyBhZnRlciB0aGUgQ29kZUJsb2NrIGlzIG1hcmtlZC4gVGhpcyB3YXMgYW4g
YWNjaWRlbnRhbCBwb2xpY3kgZGVjaXNpb24gZnJvbSBhCisgICAgLy8gbG9uZyB0aW1lIGFnbywg
YnV0IGl0IGlzIHByb2JhYmx5IE9LLCBzaW5jZSBpdCdzIG9ubHkgd29ydGh3aGlsZSB0byBrZWVw
IGZpeHBvaW50aW5nIHRoZQorICAgIC8vIHN0cnVjdHVyZSBtYXJraW5nIGlmIHdlIHN0aWxsIGhh
dmUgdW5tYXJrZWQgc3RydWN0dXJlcyBhZnRlciB0aGUgZmlyc3Qgcm91bmQuIFdlIGFsbW9zdAor
ICAgIC8vIG5ldmVyIHdpbGwgYmVjYXVzZSB3ZSB3aWxsIG1hcmstaWYtcHJvZml0YWJsZSBiYXNl
ZCBvbiB0aGUgb3duaW5nIGdsb2JhbCBvYmplY3QgYmVpbmcKKyAgICAvLyBhbHJlYWR5IG1hcmtl
ZC4gV2UgbWFyayBpdCBqdXN0IGluIGNhc2UgdGhhdCBoYWRuJ3QgaGFwcGVuZWQgeWV0LiBBbmQg
aWYgdGhlIENvZGVCbG9jayBpcworICAgIC8vIG5vdCB5ZXQgbWFya2VkIGJlY2F1c2UgaXQgd2Vh
a2x5IGRlcGVuZHMgb24gYSBzdHJ1Y3R1cmUgdGhhdCB3ZSBkaWQgbm90IHlldCBtYXJrLCB0aGVu
IHdlCisgICAgLy8gd2lsbCBrZWVwIGZpeHBvaW50aW5nIHVudGlsIHRoZSBlbmQuCisgICAgdmlz
aXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKKyAgICBy
ZXR1cm4gcnVuQ29uc3RyYWludChsb2NrZXIsIHZpc2l0b3IsIGNvZGVCbG9jayk7Cit9CisKK3Rl
bXBsYXRlIGJvb2wgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDb2RlQmxvY2tFZGdlKEFic3RyYWN0
U2xvdFZpc2l0b3ImLCBDb2RlQmxvY2sqKTsKK3RlbXBsYXRlIGJvb2wgU2NyaXB0RXhlY3V0YWJs
ZTo6dmlzaXRDb2RlQmxvY2tFZGdlKFNsb3RWaXNpdG9yJiwgQ29kZUJsb2NrKik7CisKK3ZvaWQg
U2NyaXB0RXhlY3V0YWJsZTo6ZmluYWxpemVDb2RlQmxvY2tFZGdlKFZNJiB2bSwgV3JpdGVCYXJy
aWVyPENvZGVCbG9jaz4mIGNvZGVCbG9ja0VkZ2UpCit7CisgICAgYXV0byogY29kZUJsb2NrID0g
Y29kZUJsb2NrRWRnZS5nZXQoKTsKKyAgICBpZiAoIWNvZGVCbG9jaykKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKGNvZGVCbG9jaykpIHsKKyAgICAgICAgaWYg
KGNvZGVCbG9jay0+c2hvdWxkSmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2Uodm0pKQorICAgICAg
ICAgICAgY29kZUJsb2NrLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb1dlYWtSZWZl
cmVuY2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlQmxvY2stPmpldHRpc29uKFBy
b2ZpbGVyOjpKZXR0aXNvbkR1ZVRvT2xkQWdlKTsKKyAgICAgICAgaWYgKGNvZGVCbG9jayA9PSBj
b2RlQmxvY2tFZGdlLmdldCgpKQorICAgICAgICAgICAgY29kZUJsb2NrRWRnZS5jbGVhcigpOwor
ICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKaW5kZXggNzVkYWVlNGI4ZjI4YjViYzEwZTBl
NjFjMjM2OTBlNjQ5MjA3NTE4My4uYzFiYTMzNzUxY2M0NGY1NjJlODJiMzJkZTZiMmIzOTY0MjE1
ZjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1
dGFibGUuaApAQCAtMTM5LDYgKzEzOSwxMiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlIDogcHVi
bGljIEV4ZWN1dGFibGVCYXNlIHsKIAogICAgIHN0YXRpYyBUZW1wbGF0ZU9iamVjdE1hcCYgZW5z
dXJlVGVtcGxhdGVPYmplY3RNYXBJbXBsKHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0ZU9iamVjdE1h
cD4mIGRlc3QpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KKyAgICBzdGF0aWMg
Ym9vbCBydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZpc2l0b3ImLCBD
b2RlQmxvY2sqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgorICAgIHN0YXRpYyBi
b29sIHZpc2l0Q29kZUJsb2NrRWRnZShWaXNpdG9yJiwgQ29kZUJsb2NrKik7CisgICAgdm9pZCBm
aW5hbGl6ZUNvZGVCbG9ja0VkZ2UoVk0mLCBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiYpOworCiAg
ICAgU291cmNlQ29kZSBtX3NvdXJjZTsKICAgICBJbnRyaW5zaWMgbV9pbnRyaW5zaWMgeyBOb0lu
dHJpbnNpYyB9OwogICAgIGJvb2wgbV9kaWRUcnlUb0VudGVySW5Mb29wIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBlMzJkY2IwYWQzNGIyM2JjZGEyNDcx
YTAzZWU5MmNiNTIzMzM4MjM4Li4zYmI0NThlZThlMzZkNmI0ZTI2NWZkYjljMTkzYTJlZGQyMmRl
MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00Nyw3ICs0Nyw2IEBA
CiAjaW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkV2YWxDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlLmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRmlsZUJhc2VkRnV6emVy
QWdlbnQuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgpAQCAtMjk4LDcgKzI5Nyw2
IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29w
KiBydW5Mb29wLCBib29sKiBzdWNjZXNzKQogICAgIGhhc2hNYXBCdWNrZXRTZXRTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pjo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwogICAgIGhhc2hNYXBCdWNrZXRNYXBT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5VmFs
dWU+OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CiAgICAgYmln
SW50U3RydWN0dXJlLnNldCgqdGhpcywgSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
bnVsbHB0ciwganNOdWxsKCkpKTsKLSAgICBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3RydWN0
dXJlLnNldCgqdGhpcywgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwogCiAgICAgLy8gRWFnZXJseSBpbml0aWFsaXpl
IGNvbnN0YW50IGNlbGxzIHNpbmNlIHRoZSBjb25jdXJyZW50IGNvbXBpbGVyIGNhbiBhY2Nlc3Mg
dGhlbS4KICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCmluZGV4IDFlOWUwYjQ4YzMyMjA2MmZlZTg5NjUzNWY1MTE1YTU2M2NhNDUzOTUuLjY2
NTY4ZjI5ZmUwYmZlM2YwM2U4MDhmYzEyNGZiZDg1MmNiYzVkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaApAQCAtMzczLDkgKzM3Myw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAK
ICAgICBGT1JfRUFDSF9KU0NfRFlOQU1JQ19JU09fU1VCU1BBQ0UoREVGSU5FX0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0FDQ0VTU09SX0lNUEwpCiAKLSAgICBBTFdBWVNfSU5MSU5FIElzb0NlbGxTZXQm
IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkgeyByZXR1cm4gaGVh
cC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50czsgfQotICAgIEFMV0FZ
U19JTkxJTkUgSXNvQ2VsbFNldCYgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxp
emVycygpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxp
emVyczsgfQotCiAgICAgQUxXQVlTX0lOTElORSBHQ0NsaWVudDo6SXNvU3Vic3BhY2UmIGNvZGVC
bG9ja1NwYWNlKCkgeyByZXR1cm4gY2xpZW50SGVhcC5jb2RlQmxvY2tTcGFjZTsgfQogCiAgICAg
REVGSU5FX0RZTkFNSUNfSVNPX1NVQlNQQUNFX0FDQ0VTU09SKGV2YWxFeGVjdXRhYmxlU3BhY2Up
CkBAIC00NDEsNyArNDM4LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBoYXNoTWFwQnVja2V0U2V0U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IGhhc2hNYXBCdWNrZXRNYXBTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gYmlnSW50
U3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VTdHJ1Y3R1cmU7CiAKICAgICBTdHJvbmc8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yPiBtX2Vt
cHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456197</attachid>
            <date>2022-03-30 20:40:00 -0700</date>
            <delta_ts>2022-03-30 21:22:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238485-20220330203959.patch</filename>
            <type>text/plain</type>
            <size>83953</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDE3MTc2YmU2MThhZGY2NWU5ZTE1MGIxYjhkNTdjYzEyZmU3MzFkLi44ODQyODJjYmRjMWQ4ODM0
MWVlYjI4MjA3ZjI5MzM3YTE4MDFhMGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTQgQEAKKzIwMjItMDMtMzAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDg1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgdHVybmVkIG91
dCB0aGF0IGdldHRpbmcgQ29kZUJsb2NrIGZyb20gSlNGdW5jdGlvbiBpcyBjcml0aWNhbC4gQXMg
d2Ugc3RhcnQgdXNpbmcgdW5saW5rZWQgQmFzZWxpbmUsIHdlIGFyZSBsb2FkaW5nCisgICAgICAg
IENvZGVCbG9jayBmcm9tIEpTRnVuY3Rpb24gaW5zdGVhZCBvZiBlbWJlZGRpbmcgaXQsIGFuZCBp
dCByb3VnaGx5IGNvbnRyaWJ1dGVzIHRvIDAuNSUgcmVncmVzc2lvbiBpbiBTcGVlZG9tZXRlcjIu
CisgICAgICAgIEl0IGlzIGFsc28gY3J1Y2lhbCB0byBzb21lIG90aGVyIHBsYWNlczogYm91bmQg
ZnVuY3Rpb24gdGh1bmssIHJlbW90ZSBmdW5jdGlvbiB0aHVuaywgYW5kIHZpcnR1YWwgZnVuY3Rp
b24gY2FsbHMuCisgICAgICAgIFdoaWxlIHRoZSBzdWJzZXF1ZW50IHBhdGNoIHdpbGwgZW1iZWQg
Q29kZUJsb2NrIGludG8gQ2FsbExpbmtJbmZvIHRvIG1ha2UgaXQgZmFzdCwgd2UgYWxzbyB3b3Vs
ZCBsaWtlIHRvIGtlZXAgbG9hZGluZworICAgICAgICBDb2RlQmxvY2sgZnJvbSBKU0Z1bmN0aW9u
IGZhc3RlciBzaW5jZSB0aGlzIGlzIHN0aWxsIHVzZWQgaW4gYm91bmQgZnVuY3Rpb24gdGh1bmsg
ZXRjLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIHJlbW92ZSBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlIHRvIHJlbW92ZSBvbmUtbGV2ZWwgaW5kaXJlY3Rpb24gYmV0d2VlbiBFeGVjdXRh
YmxlIHRvIENvZGVCbG9jay4KKyAgICAgICAgV2UgY2FuIGRlbGVnYXRlIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UncyBqb2IgdG8gZXhpc3RpbmcgRXhlY3V0YWJsZXMgc28gdGhhdCB3ZSBjYW4g
a2VlcCB0aGUgY3VycmVudCB3ZWFrLWVkZ2UKKyAgICAgICAgZmVhdHVyZSB3aXRob3V0IGludHJv
ZHVjaW5nIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuIEl0IGFsc28gcmVtb3ZlcyBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlIGFsbG9jYXRpb25zIGFuZAorICAgICAgICBzaHJpbmtzIHNpemVv
ZihDb2RlQmxvY2spIGJ5IDggYnl0ZS4KKworICAgICAgICBXZSBtb3ZlIGtleSBmdW5jdGlvbnMg
ZnJvbSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlIHRvIFNjcmlwdEV4ZWN1dGFibGUsIGFuZCB3
ZSBtYWludGFpbiBFeGVjdXRhYmxlLXRvLUNvZGVCbG9jayBlZGdlCisgICAgICAgIGluIEV4ZWN1
dGFibGUgc2lkZS4KKworICAgICAgICBMb2NhbCB0ZXN0aW5nIHNob3dlZCB0aGF0IDAuMyUgcHJv
Z3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZl
cmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbkNvbW1vbik6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6b3duZXJFZGdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmg6IFJlbW92ZWQuCisgICAgICAgICogaGVh
cC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChKU0M6Okhl
YXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAoSlNDOjpIZWFw
OjpkZWxldGVBbGxDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkQ29yZUNvbnN0
cmFpbnRzKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6U2Ny
aXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0OjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6OnNldEFuZFNw
YWNlRm9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0
OjpjbGVhcmFibGVDb2RlU2V0Rm9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6U2NyaXB0RXhlY3V0
YWJsZVNwYWNlQW5kU2V0OjpvdXRwdXRDb25zdHJhaW50c1NldEZvcik6CisgICAgICAgIChKU0M6
OkhlYXA6OlNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6ZmluYWxpemVyU2V0Rm9yKToKKyAg
ICAgICAgKiBoZWFwL0lzb0NlbGxTZXQuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvRGly
ZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBy
dW50aW1lL0V2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpj
b2RlQmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6dW5saW5rZWRD
b2RlQmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6bnVtVmFyaWFi
bGVzKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om51bUZ1bmN0aW9uSG9pc3RpbmdD
YW5kaWRhdGVzKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om51bVRvcExldmVsRnVu
Y3Rpb25EZWNscyk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjphbGxvd0RpcmVjdEV2
YWxDYWNoZSBjb25zdCk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb2RlQmxvY2sp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6Cisg
ICAgICAgIChKU0M6OnNob3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbCk6CisgICAgICAgICog
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZTo6cmVwbGFjZUNvZGVCbG9ja1dpdGgpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpHbG9iYWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAg
ICAgIChKU0M6Okdsb2JhbEV4ZWN1dGFibGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHNJbXBsKToK
KyAgICAgICAgKEpTQzo6R2xvYmFsRXhlY3V0YWJsZTo6cmVwbGFjZUNvZGVCbG9ja1dpdGgpOgor
ICAgICAgICAoSlNDOjpHbG9iYWxFeGVjdXRhYmxlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6
CisgICAgICAgICogcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6Okds
b2JhbEV4ZWN1dGFibGU6OmNvZGVCbG9jayBjb25zdCk6CisgICAgICAgIChKU0M6Okdsb2JhbEV4
ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50
aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbklt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3Jh
bUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6Y2xlYXJDb2RlKToKKyAgICAg
ICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUpOgorICAgICAgICAoSlNDOjpT
Y3JpcHRFeGVjdXRhYmxlOjpoYXNDbGVhcmFibGVDb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6U2NyaXB0
RXhlY3V0YWJsZTo6cnVuQ29uc3RyYWludCk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6OnZpc2l0Q29kZUJsb2NrRWRnZSk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6
OmZpbmFsaXplQ29kZUJsb2NrRWRnZSk6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6
CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6ZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpW
TTo6ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk6IERlbGV0ZWQuCisK
IDIwMjItMDMtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBP
cHRpbWl6ZSB0aGUgY29uc3RydWN0aW9uIG9mIGEgSlNDOjpJZGVudGlmaWVyIGZyb20gYW4gQVND
SUlMaXRlcmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDE4YWZlZDcx
NjI5Y2UwNzE2MzZkOWZmYTRjZGU3YWJmY2E5NGFmZC4uYzM2NTkzNzY2ZGQ2MmM5OTQxZDM5MDQz
NGU1YTcyZGJlYzA2NzVlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
NjI3LDcgKzYyNyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCiAgICAgYnl0ZWNvZGUvRGlyZWN0RXZhbENv
ZGVDYWNoZS5oCiAgICAgYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAotICAgIGJ5dGVjb2RlL0V4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIu
aAogICAgIGJ5dGVjb2RlL0V4aXRLaW5kLmgKICAgICBieXRlY29kZS9FeGl0aW5nSW5saW5lS2lu
ZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyOTYxOTdjYWY5YTE2ZDFjMzk1
MTI4OTA0NmI0Njc5MTk2ZjBjZTguLjBhMzBmNjEwNmU4NDA1OGMzNTQ3Yjk4NzM3YzhmMmJmZTEx
ZjllMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzAsNyArMzcwLDYgQEAK
IAkJMEY1RTBGRDgyMDdDNzI3MzAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9i
YmVyU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNUUwRkQ2MjA3QzcyNzEwMDk3RjBERSAvKiBERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJl
clN0YXRlLmggKi87IH07CiAJCTBGNUUwRkU3MjA4NkFENDgwMDk3RjBERSAvKiBJc29TdWJzcGFj
ZVBlclZNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUVGOTFGMTY4NzhGN0Qw
MDNFNUMyNSAvKiBKSVRUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNUVGOTFDMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjYwRkU5MDFG
RkMzNzAyMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MEZFOEUxRkZDMzZGRDAwMDMz
MjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIgLyog
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252
ZW50aW9uLmggKi87IH07CiAJCTBGNjE4MzJEMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1
ZmZsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMjQxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVtaXRTaHVmZmxlLmggKi87IH07CiAJCTBGNjE4
MzJGMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJMb3dlckFmdGVyUmVnQWxsb2MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzI2MUM0NUJGMDcwMDcy
NDUwQiAvKiBBaXJMb3dlckFmdGVyUmVnQWxsb2MuaCAqLzsgfTsKQEAgLTI4OTcsOCArMjg5Niw2
IEBACiAJCTBGNUUwRkU2MjA4NkFENDcwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElzb1N1YnNwYWNlUGVyVk0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFRjkxQjE2ODc4Rjc4MDAzRTVDMjUg
LyogSklUVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJ
VFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUVGOTFDMTY4NzhG
NzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSklUVGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNjBGRThEMUZG
QzM2RkMwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjYwRkU4RTFGRkMzNkZEMDAwMzMyMEEg
LyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQ0NhbGxpbmdD
b252ZW50aW9uLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyog
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEFpckNDYWxsaW5nQ29udmVudGlvbi5oOyBwYXRoID0gYjMvYWlyL0FpckNDYWxsaW5nQ29udmVu
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYxODMyMjFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEFpckN1c3RvbS5jcHA7IHBhdGggPSBiMy9haXIvQWlyQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5NzcsOCArODk3NCw2IEBACiAJCQkJMTRBRDkxMTIxRENB
OTdGRDAwMTRGOUZFIC8qIEV2YWxDb2RlQmxvY2suY3BwICovLAogCQkJCTE0QUQ5MTA2MURDQTky
OTQwMDE0RjlGRSAvKiBFdmFsQ29kZUJsb2NrLmggKi8sCiAJCQkJMTQxNDJFNTIxQjc5NkVERDAw
RjRCRjRCIC8qIEV4ZWN1dGFibGVJbmZvLmggKi8sCi0JCQkJMEY2MEZFOEQxRkZDMzZGQzAwMDMz
MjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwICovLAotCQkJCTBGNjBGRThFMUZG
QzM2RkQwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggKi8sCiAJCQkJMEY1
NkExRDQxNTAwMUNGMjAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuY3BwICovLAogCQkJCTBG
NTZBMUQxMTUwMDBGMzEwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggKi8sCiAJCQkJMEY0
NEE3QTkyMEJGNjg1RTAwMjJCMTcxIC8qIEV4aXRGbGFnLmNwcCAqLywKQEAgLTEwMjczLDcgKzEw
MjY4LDYgQEAKIAkJCQlFMzVBMEI5RDIyMEFEODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJhc2VJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDE0MkU1MzFCNzk2RUREMDBGNEJGNEIgLyog
RXhlY3V0YWJsZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTE5M0Y3MjY2QzQzMkQwMDQ4
M0EyQyAvKiBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjYw
RkU5MDFGRkMzNzAyMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY1NkExRDMxNTAwMEYzNTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDRBN0IwMjBCRjY4NjIwMDIyQjE3MSAvKiBFeGl0
RmxhZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NEE3QjEyMEJGNjhDOTAwMjJCMTcxIC8qIEV4
aXRpbmdJbmxpbmVLaW5kLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dAppbmRleCA4NGE5NjI0MWRiMWQ4M2JiY2RhZDNjMTllY2EzZTUzOWM2ZmI3YmY3Li4wNTA2OWM1
NDg5MjQ4YTdkMDJjNTc2ZDAwYjkzMTIxNmE0MDNlYTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CkBAIC0yMjksNyArMjI5LDYgQEAgYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCiBi
eXRlY29kZS9EZWxldGVCeVZhcmlhbnQuY3BwCiBieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hl
LmNwcAogYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5jcHAKLWJ5dGVjb2RlL0V4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UuY3BwCiBieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcAogYnl0ZWNvZGUv
RXhpdEZsYWcuY3BwCiBieXRlY29kZS9FeGl0S2luZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNmQ5ZDhiNTFlMTE5ZGJjMDc4MDkxMTRl
MWNiMTBlZGI2NzI4NDU3OC4uNmIwMjkxNTBiNTEyYmMzOTVhMzE5MDI4ZTJlYzVhN2Q4ZWY4YTg4
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTMxMSw3ICszMTEsNiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jawogdm9pZCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90
aGVyKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmaW5pc2hDcmVhdGlv
bkNvbW1vbih2bSk7CiAKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CiAKQEAgLTM2Nyw3ICsz
NjYsNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIEpTU2NvcGUqIHNjb3BlKQogewog
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmaW5pc2hDcmVhdGlvbkNvbW1vbih2
bSk7CiAKICAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOwogCkBAIC03NjYsMTEgKzc2
NCw2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1
dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbkNvbW1vbihWTSYgdm0pCi17Ci0gICAgbV9vd25l
ckVkZ2Uuc2V0KHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpjcmVhdGUodm0s
IHRoaXMpKTsKLX0KLQogI2lmIEVOQUJMRShKSVQpCiB2b2lkIENvZGVCbG9jazo6c2V0dXBXaXRo
VW5saW5rZWRCYXNlbGluZUNvZGUoUmVmPEJhc2VsaW5lSklUQ29kZT4gaml0Q29kZSkKIHsKQEAg
LTEwNTEsNyArMTA0NCw2IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuSW1wbChKU0Nl
bGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgQ29kZUJsb2NrKiB0aGlzT2JqZWN0ID0g
anNDYXN0PENvZGVCbG9jayo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0
b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb3duZXJFZGdlKTsKICAgICB0
aGlzT2JqZWN0LT52aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogfQogCkBAIC0xMDc5LDcgKzEwNzEs
NyBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7CiAgICAgc3Ry
b25nbHlWaXNpdFdlYWtSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7CiAgICAgCi0gICAgSGVh
cDo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSkuYWRkKHRoaXMpOworICAgIEhlYXA6
OkNvZGVCbG9ja1NwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkpLmFkZCh0aGlzKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTE2NjcsNyArMTY1OSw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCiAgICAgfTsKICAgICB1
cGRhdGVBY3Rpdml0eSgpOwogCi0gICAgSGVhcDo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3Bh
Y2UoKSkucmVtb3ZlKHRoaXMpOworICAgIEhlYXA6OkNvZGVCbG9ja1NwYWNlQW5kU2V0OjpzZXRG
b3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKIAogICAgIC8vIEluIENvZGVCbG9jazo6c2hv
dWxkVmlzaXRTdHJvbmdseSgpIHdlIG1heSBoYXZlIGRlY2lkZWQgdG8gc2tpcCB2aXNpdGluZyB0
aGlzCiAgICAgLy8gY29kZUJsb2NrLiBCeSB0aGUgdGltZSB3ZSBnZXQgaGVyZSwgd2UncmUgZG9u
ZSB3aXRoIHRoZSB2ZXJpZmllciBHQy4gU28sIGxldCdzCkBAIC0xODM0LDcgKzE4MjYsNyBAQCB2
b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiBsb2NrZXIsCiAgICAgVU5VU0VEX1BBUkFNKGxvY2tlcik7CiAgICAgCiAg
ICAgdmlzaXRvci5hcHBlbmQobV9nbG9iYWxPYmplY3QpOwotICAgIHZpc2l0b3IuYXBwZW5kKG1f
b3duZXJFeGVjdXRhYmxlKTsgLy8gVGhpcyBpcyBleHRyYSBpbXBvcnRhbnQgc2luY2UgaXQgY2F1
c2VzIHRoZSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlIHRvIGJlIG1hcmtlZC4KKyAgICB2aXNp
dG9yLmFwcGVuZChtX293bmVyRXhlY3V0YWJsZSk7IC8vIFRoaXMgaXMgZXh0cmEgaW1wb3J0YW50
IHNpbmNlIGl0IGNhdXNlcyB0aGUgRXhlY3V0YWJsZSAtPiBDb2RlQmxvY2sgZWRnZSBhY3RpdmF0
ZWQuCiAgICAgdmlzaXRvci5hcHBlbmQobV91bmxpbmtlZENvZGUpOwogICAgIGlmIChtX3JhcmVE
YXRhKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2RpcmVjdEV2YWxDb2RlQ2FjaGUudmlzaXRBZ2dy
ZWdhdGUodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKaW5kZXggNDY5NjNkNzNkZTIzZTAxZmQxNTI1NDUxYTgzNDdiNmM3NzVjMTgyNi4uMjdhODMz
NTE4MDAxMzY5ODU0MmU0N2I1NDNjYWIzMmJhM2FjY2YzMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtODcsMTIgKzg3LDEyIEBAIGNsYXNzIFVuYXJ5
QXJpdGhQcm9maWxlOwogY2xhc3MgQmluYXJ5QXJpdGhQcm9maWxlOwogY2xhc3MgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgQ29kZUJsb2NrU2V0OwotY2xhc3MgRXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZTsKIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CiBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQ7CiBjbGFzcyBNZXRhZGF0YVRhYmxlOwogY2xhc3MgUmVnaXN0ZXJBdE9mZnNl
dExpc3Q7CitjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87
CiBjbGFzcyBCYXNlbGluZUpJVENvZGU7CiBjbGFzcyBCYXNlbGluZUpJVERhdGE7CkBAIC0xMzQs
OCArMTM0LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVy
KTsKICAgICBib29sIGZpbmlzaENyZWF0aW9uKFZNJiwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTU2NvcGUqKTsKLSAgICAKLSAgICB2b2lk
IGZpbmlzaENyZWF0aW9uQ29tbW9uKFZNJik7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxP
YmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogCkBAIC0zNjksOCArMzY3LDYgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgCiAgICAgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9vd25lckV4ZWN1dGFibGUuZ2V0KCk7IH0KICAg
ICAKLSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBvd25lckVkZ2UoKSBjb25zdCB7IHJl
dHVybiBtX293bmVyRWRnZS5nZXQoKTsgfQotCiAgICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4g
Km1fdm07IH0KIAogICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzUmVnaXN0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX3VubGlua2VkQ29kZS0+dGhpc1JlZ2lzdGVyKCk7IH0KQEAgLTg0OSw3ICs4NDUsOCBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgQ29kZUJsb2NrU2V0OwotICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOworICAgIGZyaWVuZCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CisgICAgZnJp
ZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNp
dG9yPiBBTFdBWVNfSU5MSU5FIHZvaWQgdmlzaXRDaGlsZHJlbihWaXNpdG9yJik7CiAKQEAgLTky
Myw3ICs5MjAsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFdy
aXRlQmFycmllcjxVbmxpbmtlZENvZGVCbG9jaz4gbV91bmxpbmtlZENvZGU7CiAgICAgV3JpdGVC
YXJyaWVyPFNjcmlwdEV4ZWN1dGFibGU+IG1fb3duZXJFeGVjdXRhYmxlOwotICAgIFdyaXRlQmFy
cmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX293bmVyRWRnZTsKICAgICAvLyBtX3Zt
IG11c3QgYmUgYSBwb2ludGVyIChpbnN0ZWFkIG9mIGEgcmVmZXJlbmNlKSBiZWNhdXNlIHRoZSBK
U0NMTEludE9mZnNldHNFeHRyYWN0b3IKICAgICAvLyBjYW5ub3QgaGFuZGxlIGl0IGJlaW5nIGEg
cmVmZXJlbmNlLgogICAgIFZNKiBtX3ZtOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmRkYjdhNjY1Nzk5YjY3NzY3YjMwNGZlNWYzNTg5NDdh
ZDQ3OTM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDIxMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgotI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNPYmplY3RJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsK
LQotY29uc3QgQ2xhc3NJbmZvIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnNfaW5mbyA9IHsg
IkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UiX3MsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSkgfTsKLQotU3Ry
dWN0dXJlKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLXsKLSAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotfQotCi1FeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpjcmVhdGUoVk0m
IHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKLXsKLSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlPih2bSkpIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Uodm0sIGNvZGVCbG9jayk7
Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Ci17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVCghaXNBY3RpdmUo
KSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2U6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlz
aXRvcikKLXsKLSAgICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7Ci0gICAgRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZSogZWRnZSA9IGpzQ2FzdDxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKj4oY2Vs
bCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjZWxsLCBpbmZvKCkpOwotICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7Ci0KLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGVkZ2UtPm1fY29kZUJsb2NrLmdldCgpOwotCi0gICAgLy8gSXQncyBwb3NzaWJsZSBm
b3Igc29tZW9uZSB0byBob2xkIGEgcG9pbnRlciB0byB0aGUgZWRnZSBhZnRlciB0aGUgZWRnZSBo
YXMgY2xlYXJlZCBpdHMgd2VhawotICAgIC8vIHJlZmVyZW5jZSB0byB0aGUgY29kZUJsb2NrLiBJ
biBhIGNvbnNlcnZhdGl2ZSBHQyBsaWtlIG91cnMsIHRoYXQgY291bGQgaGFwcGVuIGF0IHJhbmRv
bSBmb3IKLSAgICAvLyBubyBnb29kIHJlYXNvbiBhbmQgaXQncyBUb3RhbGx5IE9LIChUTSkuIFNl
ZSBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpIGZvciB3aGVyZSB3ZSBjbGVhcgotICAgIC8vIG1f
Y29kZUJsb2NrLgotICAgIGlmICghY29kZUJsb2NrKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgaWYgKCFlZGdlLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJy
aWVyZWQoY29kZUJsb2NrKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLQotICAgIGlmIChjb2Rl
QmxvY2stPnNob3VsZFZpc2l0U3Ryb25nbHkobG9ja2VyLCB2aXNpdG9yKSkKLSAgICAgICAgdmlz
aXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwotICAgIAotICAgIGlmICghdmlzaXRv
ci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlc1dpdGhGaW5hbGl6ZXJzKCkuYWRkKGVkZ2UpOwotICAgIAotICAgIGlmIChKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKSB7Ci0gICAgICAgIC8vIElmIHdl
IGpldHRpc29uIG91cnNlbHZlcyB3ZSdsbCBpbnN0YWxsIG91ciBhbHRlcm5hdGl2ZSwgc28gbWFr
ZSBzdXJlIHRoYXQgaXQKLSAgICAgICAgLy8gc3Vydml2ZXMgR0MgZXZlbiBpZiB3ZSBkb24ndC4K
LSAgICAgICAgdmlzaXRvci5hcHBlbmQoY29kZUJsb2NrLT5tX2FsdGVybmF0aXZlKTsKLSAgICB9
Ci0gICAgCi0gICAgLy8gTk9URTogVGhlcmUgYXJlIHR3byBzaWRlcyB0byB0aGlzIGNvbnN0cmFp
bnQsIHdpdGggZGlmZmVyZW50IHJlcXVpcmVtZW50cyBmb3IgY29ycmVjdG5lc3MuCi0gICAgLy8g
QmVjYXVzZSBldmVyeXRoaW5nIGlzIHVsdGltYXRlbHkgcHJvdGVjdGVkIHdpdGggd2VhayByZWZl
cmVuY2VzIGFuZCBqZXR0aXNvbmluZywgaXQncwotICAgIC8vIGFsd2F5cyAiT0siIHRvIGNsYWlt
IHRoYXQgc29tZXRoaW5nIGlzIGRlYWQgcHJlbWF0dXJlbHkgYW5kIGl0J3MgIk9LIiB0byBrZWVw
IHRoaW5ncyBhbGl2ZS4KLSAgICAvLyBCdXQgYm90aCBjaG9pY2VzIGNvdWxkIGxlYWQgdG8gYmFk
IHBlcmYgLSBlaXRoZXIgcmVjb21wIGN5Y2xlcyBvciBsZWFrcy4KLSAgICAvLwotICAgIC8vIERl
dGVybWluaW5nIENvZGVCbG9jayBsaXZlbmVzczogVGhpcyBwYXJ0IGlzIHRoZSBtb3N0IGNvbnNl
cXVlbnRpYWwuIFdlIHdhbnQgdG8ga2VlcCB0aGUKLSAgICAvLyBvdXRwdXQgY29uc3RyYWludCBh
Y3RpdmUgc28gbG9uZyBhcyB3ZSB0aGluayB0aGF0IHdlIG1heSB5ZXQgcHJvdmUgdGhhdCB0aGUg
Q29kZUJsb2NrIGlzCi0gICAgLy8gbGl2ZSBidXQgd2UgaGF2ZW4ndCBkb25lIGl0IHlldC4KLSAg
ICAvLwotICAgIC8vIE1hcmtpbmcgU3RydWN0dXJlcyBpZiBwcm9maXRhYmxlOiBJdCdzIGltcG9y
dGFudCB0aGF0IHdlIGRvIGEgcGFzcyBvZiB0aGlzLiBMb2dpY2FsbHksIHRoaXMKLSAgICAvLyBz
ZWVtcyBsaWtlIGl0IGlzIGEgY29uc3RyYWludCBvZiBDb2RlQmxvY2suIEJ1dCB3ZSBoYXZlIGFs
d2F5cyBmaXJzdCBydW4gdGhpcyBhcyBhIHJlc3VsdAotICAgIC8vIG9mIHRoZSBlZGdlIGJlaW5n
IG1hcmtlZCBldmVuIGJlZm9yZSB3ZSBkZXRlcm1pbmUgdGhlIGxpdmVuZXNzIG9mIHRoZSBDb2Rl
QmxvY2suIFRoaXMKLSAgICAvLyBhbGxvd3MgYSBDb2RlQmxvY2sgdG8gbWFyayBpdHNlbGYgYnkg
Zmlyc3QgcHJvdmluZyB0aGF0IGFsbCBvZiB0aGUgU3RydWN0dXJlcyBpdCB3ZWFrbHkKLSAgICAv
LyBkZXBlbmRzIG9uIGNvdWxkIGJlIHN0cm9uZ2x5IG1hcmtlZC4gKFRoaXMgcGFydCBpcyBhbHNv
IGNhbGxlZCBwcm9wYWdhdGVUcmFuc2l0aW9ucy4pCi0gICAgLy8KLSAgICAvLyBBcyBhIHdlaXJk
IGNhdmVhdCwgd2Ugb25seSBmaXhwb2ludCB0aGUgY29uc3RyYWludHMgc28gbG9uZyBhcyB0aGUg
Q29kZUJsb2NrIGlzIG5vdCBsaXZlLgotICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSBtYXkgb3Zl
cmxvb2sgc3RydWN0dXJlIG1hcmtpbmcgb3Bwb3J0dW5pdGllcyBjcmVhdGVkIGJ5IG90aGVyIG1h
cmtpbmcKLSAgICAvLyB0aGF0IGhhcHBlbnMgYWZ0ZXIgdGhlIENvZGVCbG9jayBpcyBtYXJrZWQu
IFRoaXMgd2FzIGFuIGFjY2lkZW50YWwgcG9saWN5IGRlY2lzaW9uIGZyb20gYQotICAgIC8vIGxv
bmcgdGltZSBhZ28sIGJ1dCBpdCBpcyBwcm9iYWJseSBPSywgc2luY2UgaXQncyBvbmx5IHdvcnRo
d2hpbGUgdG8ga2VlcCBmaXhwb2ludGluZyB0aGUKLSAgICAvLyBzdHJ1Y3R1cmUgbWFya2luZyBp
ZiB3ZSBzdGlsbCBoYXZlIHVubWFya2VkIHN0cnVjdHVyZXMgYWZ0ZXIgdGhlIGZpcnN0IHJvdW5k
LiBXZSBhbG1vc3QKLSAgICAvLyBuZXZlciB3aWxsIGJlY2F1c2Ugd2Ugd2lsbCBtYXJrLWlmLXBy
b2ZpdGFibGUgYmFzZWQgb24gdGhlIG93bmluZyBnbG9iYWwgb2JqZWN0IGJlaW5nCi0gICAgLy8g
YWxyZWFkeSBtYXJrZWQuIFdlIG1hcmsgaXQganVzdCBpbiBjYXNlIHRoYXQgaGFkbid0IGhhcHBl
bmVkIHlldC4gQW5kIGlmIHRoZSBDb2RlQmxvY2sgaXMKLSAgICAvLyBub3QgeWV0IG1hcmtlZCBi
ZWNhdXNlIGl0IHdlYWtseSBkZXBlbmRzIG9uIGEgc3RydWN0dXJlIHRoYXQgd2UgZGlkIG5vdCB5
ZXQgbWFyaywgdGhlbiB3ZQotICAgIC8vIHdpbGwga2VlcCBmaXhwb2ludGluZyB1bnRpbCB0aGUg
ZW5kLgotICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMo
KS5hZGQoZWRnZSk7Ci0gICAgZWRnZS0+cnVuQ29uc3RyYWludChsb2NrZXIsIHZtLCB2aXNpdG9y
KTsKLX0KLQotREVGSU5FX1ZJU0lUX0NISUxEUkVOKEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Up
OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3Im
IHZpc2l0b3IpCi17Ci0gICAgVk0mIHZtID0gdmlzaXRvci52bSgpOwotICAgIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2UqIGVkZ2UgPSBqc0Nhc3Q8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSo+
KGNlbGwpOwotICAgIAotICAgIGVkZ2UtPnJ1bkNvbnN0cmFpbnQoTm9Mb2NraW5nTmVjZXNzYXJ5
LCB2bSwgdmlzaXRvcik7Ci19Ci0KLURFRklORV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlOVFMoRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZSk7Ci0KLXZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQotewotICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gbV9jb2RlQmxvY2suZ2V0KCk7Ci0gICAgCi0gICAgaWYgKCF2bS5oZWFwLmlzTWFy
a2VkKGNvZGVCbG9jaykpIHsKLSAgICAgICAgaWYgKGNvZGVCbG9jay0+c2hvdWxkSmV0dGlzb25E
dWVUb1dlYWtSZWZlcmVuY2Uodm0pKQotICAgICAgICAgICAgY29kZUJsb2NrLT5qZXR0aXNvbihQ
cm9maWxlcjo6SmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2UpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBjb2RlQmxvY2stPmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvT2xkQWdl
KTsKLSAgICAgICAgbV9jb2RlQmxvY2suY2xlYXIoKTsKLSAgICB9Ci0gICAgCi0gICAgdm0uZXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpLnJlbW92ZSh0aGlzKTsKLSAg
ICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cygpLnJlbW92ZSh0
aGlzKTsKLX0KLQotaW5saW5lIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6YWN0aXZh
dGUoKQotewotICAgIHNldFBlckNlbGxCaXQodHJ1ZSk7Ci19Ci0KLWlubGluZSB2b2lkIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGUoKQotewotICAgIHNldFBlckNlbGxCaXQo
ZmFsc2UpOwotfQotCi1pbmxpbmUgYm9vbCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjppc0Fj
dGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHBlckNlbGxCaXQoKTsKLX0KLQotQ29kZUJsb2Nr
KiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFjdGl2YXRlQW5kVW53cmFwKEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2UpCi17Ci0gICAgaWYgKCFlZGdlKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBlZGdlLT5kZWFjdGl2YXRlKCk7Ci0gICAgcmV0dXJuIGVkZ2UtPmNv
ZGVCbG9jaygpOwotfQotCi1FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlOjp3cmFwKENvZGVCbG9jayogY29kZUJsb2NrKQotewotICAgIGlmICghY29k
ZUJsb2NrKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY29kZUJsb2NrLT5v
d25lckVkZ2UoKTsKLX0KLSAgICAKLUV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3RpdmF0ZShDb2RlQmxvY2sqIGNvZGVCbG9jaykK
LXsKLSAgICBpZiAoIWNvZGVCbG9jaykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogcmVzdWx0ID0gY29kZUJsb2NrLT5vd25lckVkZ2UoKTsK
LSAgICByZXN1bHQtPmFjdGl2YXRlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZTo6RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZShWTSYgdm0sIENv
ZGVCbG9jayogY29kZUJsb2NrKQotICAgIDogQmFzZSh2bSwgdm0uZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fY29kZUJsb2NrKHZtLCB0aGlzLCBjb2Rl
QmxvY2spCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiBsb2NrZXIsIFZNJiB2bSwgVmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IG1fY29kZUJsb2NrLmdldCgpOwotICAgIAotICAgIGNvZGVCbG9jay0+cHJvcGFn
YXRlVHJhbnNpdGlvbnMobG9ja2VyLCB2aXNpdG9yKTsKLSAgICBjb2RlQmxvY2stPmRldGVybWlu
ZUxpdmVuZXNzKGxvY2tlciwgdmlzaXRvcik7Ci0KLSAgICBpZiAodmlzaXRvci5pc01hcmtlZChj
b2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25z
dHJhaW50cygpLnJlbW92ZSh0aGlzKTsKLX0KLQotdGVtcGxhdGUgdm9pZCBFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZN
JiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwotdGVtcGxhdGUgdm9pZCBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwg
U2xvdFZpc2l0b3ImKTsKLQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYTZmOWI0ZThlMWFhYTJlNzBhM2Qw
MWNmMzlmMjk2NmJjOTM0NjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKLSNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgotI2lu
Y2x1ZGUgIkpTQ2FzdC5oIgotI2luY2x1ZGUgIlZNLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1j
bGFzcyBDb2RlQmxvY2s7Ci1jbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0KLWNsYXNzIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0
YWw7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+Ci0g
ICAgc3RhdGljIEdDQ2xpZW50OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQotICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UoKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQotICAgIHN0YXRpYyBFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlKiBjcmVhdGUoVk0mLCBDb2RlQmxvY2sqKTsKLSAgICAKLSAgICBERUNM
QVJFX0lORk87Ci0KLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLmdldCgpOyB9Ci0KLSAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOwotICAgIERF
Q0xBUkVfVklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTOwotICAgIHZvaWQgZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkoVk0mKTsKLSAgICAKLSAgICBzdGF0aWMgQ29kZUJsb2NrKiB1bndyYXAoRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSkKLSAgICB7Ci0gICAgICAgIGlmICghZWRnZSkKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gZWRnZS0+Y29kZUJsb2Nr
KCk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBDb2RlQmxvY2sqIGRlYWN0aXZhdGVBbmRVbndy
YXAoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSk7Ci0gICAgCi0gICAgc3RhdGljIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIHdyYXAoQ29kZUJsb2NrKiBjb2RlQmxvY2spOwotICAg
IAotICAgIHN0YXRpYyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiB3cmFwQW5kQWN0aXZhdGUo
Q29kZUJsb2NrKiBjb2RlQmxvY2spOwotCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNv
ZGVCbG9jaygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlLCBtX2NvZGVCbG9jayk7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UoVk0m
LCBDb2RlQmxvY2sqKTsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQotICAgIHZv
aWQgYWN0aXZhdGUoKTsKLSAgICB2b2lkIGRlYWN0aXZhdGUoKTsKLSAgICBib29sIGlzQWN0aXZl
KCkgY29uc3Q7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPiB2b2lkIHJ1bkNvbnN0
cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBWaXNpdG9yJik7Ci0KLSAgICBX
cml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA4ZTUzZGRlYWQxZmQ0NTU4
MGY1Zjk0ZDQ4ZWNmYWNlMTdjNzc3MDYxLi43MWI4NzgzYjJiZjZhMjFjNjk2MzYzNzUyNTU2M2I0
MzU4ZDZjNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMzY4LDggKzM2
OCw2IEBAIEhlYXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGRlc3Ry
dWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsICp0aGlzLCBkZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhh
c2g6MHg0ZjVlZDdhOQogICAgIEZPUl9FQUNIX0pTQ19DT01NT05fSVNPX1NVQlNQQUNFKElOSVRf
U0VSVkVSX0lTT19TVUJTUEFDRSkKICAgICBGT1JfRUFDSF9KU0NfU1RSVUNUVVJFX0lTT19TVUJT
UEFDRShJTklUX1NFUlZFUl9TVFJVQ1RVUkVfSVNPX1NVQlNQQUNFKQotICAgICwgZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZVNwYWNlKQotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyhl
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCiAgICAgLCBjb2RlQmxvY2tTcGFjZUFuZFNl
dCBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
Q29kZUJsb2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKICAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlQW5kU2V0IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1OGYzCiAgICAgLCBwcm9n
cmFtRXhlY3V0YWJsZVNwYWNlQW5kU2V0IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDUyN2M3
N2U3CkBAIC02NzQsOSArNjcyLDIyIEBAIHZvaWQgSGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFs
RmluYWxpemVycygpCiB7CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB2bS5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKLSAgICBmaW5hbGl6ZU1h
cmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4oZnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2VBbmRTZXQuc3BhY2UpOworCisgICAgeworICAgICAgICAvLyBXZSBydW4g
dGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29k
ZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9j
ayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCisKKyAgICAgICAgLy8gRnVuY3Rpb25F
eGVjdXRhYmxlIHJlcXVpcmVzIGFsbCBsaXZlIGluc3RhbmNlcyB0byBydW4gZmluYWxpemVycy4g
VGh1cywgd2UgZG8gbm90IHVzZSBmaW5hbGl6ZXIgc2V0LgorICAgICAgICBmaW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4oZnVuY3Rpb25FeGVj
dXRhYmxlU3BhY2VBbmRTZXQuc3BhY2UpOworCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8UHJvZ3JhbUV4ZWN1dGFibGU+KHByb2dyYW1FeGVjdXRhYmxlU3Bh
Y2VBbmRTZXQuZmluYWxpemVyU2V0KTsKKyAgICAgICAgaWYgKG1fZXZhbEV4ZWN1dGFibGVTcGFj
ZSkKKyAgICAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXZh
bEV4ZWN1dGFibGU+KG1fZXZhbEV4ZWN1dGFibGVTcGFjZS0+ZmluYWxpemVyU2V0KTsKKyAgICAg
ICAgaWYgKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAgIGZpbmFs
aXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+
KG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZS0+ZmluYWxpemVyU2V0KTsKKyAgICB9CisK
ICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN5bWJvbFRhYmxlPihz
eW1ib2xUYWJsZVNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25k
aXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVj
dXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkuCisKICAgICBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoCiAgICAgICAgIFsmXSAoYXV0byYgc3Bh
Y2UpIHsKICAgICAgICAgICAgIHRoaXMtPmZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8Q29kZUJsb2NrPihzcGFjZS5zZXQpOwpAQCAtMTAwMyw3ICsxMDE0LDcgQEAgdm9pZCBI
ZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKERlbGV0ZUFsbENvZGVFZmZvcnQgZWZmb3J0KQogICAg
IGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoCiAgICAgICAgIFsmXSAoYXV0byYgc3BhY2VB
bmRTZXQpIHsKICAgICAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2Nv
cGUoKnRoaXMpOwotICAgICAgICAgICAgYXV0byYgc2V0ID0gc3BhY2VBbmRTZXQuc2V0OworICAg
ICAgICAgICAgYXV0byYgc2V0ID0gc3BhY2VBbmRTZXQuY2xlYXJhYmxlQ29kZVNldDsKICAgICAg
ICAgICAgIHNldC5mb3JFYWNoTGl2ZUNlbGwoCiAgICAgICAgICAgICAgICAgWyZdIChIZWFwQ2Vs
bCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKICAgICAgICAgICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGFibGUqPihjZWxs
KTsKQEAgLTI5MTcsNyArMjkyOCwxMiBAQCB2b2lkIEhlYXA6OmFkZENvcmVDb25zdHJhaW50cygp
CiAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBTZXRSb290TWFya1JlYXNvblNjb3Bl
IHJvb3RTY29wZSh2aXNpdG9yLCBSb290TWFya1JlYXNvbjo6RXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXMpOwotICAgICAgICAgICAgICAgIGFkZChoZWFwLT5leGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlc1dpdGhDb25zdHJhaW50cyk7CisgICAgICAgICAgICAgICAgYWRkKGhlYXAtPmZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlQW5kU2V0Lm91dHB1dENvbnN0cmFpbnRzU2V0KTsKKyAgICAgICAgICAg
ICAgICBhZGQoaGVhcC0+cHJvZ3JhbUV4ZWN1dGFibGVTcGFjZUFuZFNldC5vdXRwdXRDb25zdHJh
aW50c1NldCk7CisgICAgICAgICAgICAgICAgaWYgKGhlYXAtPm1fZXZhbEV4ZWN1dGFibGVTcGFj
ZSkKKyAgICAgICAgICAgICAgICAgICAgYWRkKGhlYXAtPm1fZXZhbEV4ZWN1dGFibGVTcGFjZS0+
b3V0cHV0Q29uc3RyYWludHNTZXQpOworICAgICAgICAgICAgICAgIGlmIChoZWFwLT5tX21vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCisgICAgICAgICAgICAgICAgICAgIGFkZChoZWFwLT5t
X21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UtPm91dHB1dENvbnN0cmFpbnRzU2V0KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChoZWFwLT5tX3dlYWtNYXBTcGFjZSkgewogICAg
ICAgICAgICAgICAgIFNldFJvb3RNYXJrUmVhc29uU2NvcGUgcm9vdFNjb3BlKHZpc2l0b3IsIFJv
b3RNYXJrUmVhc29uOjpXZWFrTWFwU3BhY2UpOwpAQCAtMzE2OSwxOCArMzE4NSwxOCBAQCBGT1Jf
RUFDSF9KU0NfRFlOQU1JQ19JU09fU1VCU1BBQ0UoREVGSU5FX0RZTkFNSUNfSVNPX1NVQlNQQUNF
X01FTUJFUl9TTE9XKQogCiAjdW5kZWYgREVGSU5FX0RZTkFNSUNfSVNPX1NVQlNQQUNFX01FTUJF
Ul9TTE9XCiAKLSNkZWZpbmUgREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xP
VyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKKyNkZWZpbmUgREVGSU5FX0RZTkFNSUNfU1BB
Q0VfQU5EX1NFVF9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUsIHNwYWNlVHlw
ZSkgXAogICAgIElzb1N1YnNwYWNlKiBIZWFwOjpuYW1lIyNTbG93KCkgXAogICAgIHsgXAogICAg
ICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAotICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1
ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGhlYXBDZWxsVHlwZSwgdHlw
ZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8c3BhY2VUeXBlPiBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAogICAgICAgICBXVEY6OnN0
b3JlU3RvcmVGZW5jZSgpOyBcCiAgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwK
ICAgICAgICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKICAgICB9CiAKLURFRklORV9EWU5B
TUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NMT1coZXZhbEV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFibGUpIC8vIEhhc2g6MHg5NThlM2U5
ZAotREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY1MDZmYTNjCitERUZJTkVfRFlOQU1JQ19TUEFDRV9B
TkRfU0VUX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIEV2YWxFeGVjdXRhYmxlLCBIZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VB
bmRTZXQpIC8vIEhhc2g6MHg5NThlM2U5ZAorREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9N
RU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSwgSGVhcDo6U2NyaXB0RXhlY3V0
YWJsZVNwYWNlQW5kU2V0KSAvLyBIYXNoOjB4NjUwNmZhM2MKIAogI3VuZGVmIERFRklORV9EWU5B
TUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NMT1cKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CmluZGV4IGFmMGU0YzQ2YTZjZWE3MDZiY2IxYWVlYzQxMmYxOWQ1MWJiNDgxNTIuLmZhZDg1OTk4
ZWE0N2I5MjFkYzQ2YjU5MzMwMjU0MWUyYmZlM2I3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKQEAgLTEyMCw3ICsxMjAsNiBAQCBjbGFzcyBIZWFwOwogICAgIHYoZGF0ZUluc3RhbmNl
U3BhY2UsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRGF0ZUluc3RhbmNlKSBcCiAgICAgdihk
b21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgRE9NQXR0cmli
dXRlR2V0dGVyU2V0dGVyKSBcCiAgICAgdihleGNlcHRpb25TcGFjZSwgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgRXhjZXB0aW9uKSBcCi0gICAgdihleGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpIFwK
ICAgICB2KGZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRnVuY3Rpb24pIFwKICAg
ICB2KGdldHRlclNldHRlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBHZXR0ZXJTZXR0ZXIpIFwK
ICAgICB2KGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlLCBnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnRIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KSBcCkBAIC0xMDI5
LDEwICsxMDI4LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgRk9SX0VBQ0hfSlNDX0RZTkFNSUNfSVNP
X1NVQlNQQUNFKERFRklORV9EWU5BTUlDX0lTT19TVUJTUEFDRV9NRU1CRVIpCiAjdW5kZWYgREVG
SU5FX0RZTkFNSUNfSVNPX1NVQlNQQUNFX01FTUJFUgogICAgIAotICAgIElzb0NlbGxTZXQgZXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7Ci0gICAgSXNvQ2VsbFNldCBl
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOwotCi0jZGVmaW5lIERZTkFN
SUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKKyNkZWZpbmUgRFlOQU1JQ19T
UEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobmFtZSwgdHlwZSkgXAogICAgIHRlbXBsYXRlPFN1
YnNwYWNlQWNjZXNzIG1vZGU+IFwKICAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKICAgICB7IFwK
QEAgLTEwNDMsNyArMTAzOSw3IEBAIGNsYXNzIEhlYXAgewogICAgICAgICByZXR1cm4gbmFtZSMj
U2xvdygpOyBcCiAgICAgfSBcCiAgICAgSXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsgXAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxTcGFjZUFuZFNldD4gbV8jI25hbWU7CisgICAgc3RkOjp1bmlxdWVf
cHRyPHR5cGU+IG1fIyNuYW1lOwogICAgIAogICAgIHN0cnVjdCBTcGFjZUFuZFNldCB7CiAgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwNjcsNyArMTA2Myw4IEBA
IGNsYXNzIEhlYXAgewogICAgICAgICB9CiAgICAgfTsKIAotICAgIFNwYWNlQW5kU2V0IGNvZGVC
bG9ja1NwYWNlQW5kU2V0OworICAgIHVzaW5nIENvZGVCbG9ja1NwYWNlQW5kU2V0ID0gU3BhY2VB
bmRTZXQ7CisgICAgQ29kZUJsb2NrU3BhY2VBbmRTZXQgY29kZUJsb2NrU3BhY2VBbmRTZXQ7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaENvZGVCbG9ja1Nw
YWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCkBAIC0xMDc1LDEwICsxMDcyLDM5IEBAIGNsYXNzIEhlYXAg
ewogICAgICAgICBmdW5jKGNvZGVCbG9ja1NwYWNlQW5kU2V0KTsKICAgICB9CiAKLSAgICBEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNwYWNlKQotICAg
IERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlU3BhY2UpCi0gICAgU3BhY2VBbmRTZXQgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQ7
Ci0gICAgU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZUFuZFNldDsKKyAgICBzdHJ1
Y3QgU2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIElzb1N1YnNwYWNlIHNwYWNlOworICAgICAgICBJ
c29DZWxsU2V0IGNsZWFyYWJsZUNvZGVTZXQ7CisgICAgICAgIElzb0NlbGxTZXQgb3V0cHV0Q29u
c3RyYWludHNTZXQ7CisgICAgICAgIElzb0NlbGxTZXQgZmluYWxpemVyU2V0OworCisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICAgICAgU2NyaXB0RXhlY3V0YWJs
ZVNwYWNlQW5kU2V0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICAgICAgICAgIDogc3Bh
Y2Uoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAgICAgICwg
Y2xlYXJhYmxlQ29kZVNldChzcGFjZSkKKyAgICAgICAgICAgICwgb3V0cHV0Q29uc3RyYWludHNT
ZXQoc3BhY2UpCisgICAgICAgICAgICAsIGZpbmFsaXplclNldChzcGFjZSkKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIFNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldCYg
c2V0QW5kU3BhY2VGb3IoU3Vic3BhY2UmIHNwYWNlKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gKmJpdHdpc2VfY2FzdDxTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQqPigKKyAgICAg
ICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZzcGFjZSkgLQorICAgICAgICAgICAgICAg
IE9CSkVDVF9PRkZTRVRPRihTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQsIHNwYWNlKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgSXNvQ2VsbFNldCYgY2xlYXJhYmxlQ29kZVNldEZv
cihTdWJzcGFjZSYgc3BhY2UpIHsgcmV0dXJuIHNldEFuZFNwYWNlRm9yKHNwYWNlKS5jbGVhcmFi
bGVDb2RlU2V0OyB9CisgICAgICAgIHN0YXRpYyBJc29DZWxsU2V0JiBvdXRwdXRDb25zdHJhaW50
c1NldEZvcihTdWJzcGFjZSYgc3BhY2UpIHsgcmV0dXJuIHNldEFuZFNwYWNlRm9yKHNwYWNlKS5v
dXRwdXRDb25zdHJhaW50c1NldDsgfQorICAgICAgICBzdGF0aWMgSXNvQ2VsbFNldCYgZmluYWxp
emVyU2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkgeyByZXR1cm4gc2V0QW5kU3BhY2VGb3Ioc3BhY2Up
LmZpbmFsaXplclNldDsgfQorICAgIH07CisKKyAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVG
SU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNwYWNlLCBTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRT
ZXQpCisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGVTcGFjZSwgU2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0KQorICAgIFNjcmlw
dEV4ZWN1dGFibGVTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldDsKKyAg
ICBTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZUFuZFNl
dDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoU2NyaXB0
RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCkBAIC0xMDkxLDcgKzExMTcsOCBAQCBj
bGFzcyBIZWFwIHsKICAgICAgICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJsZVNwYWNlQW5kU2V0KTsK
ICAgICB9CiAKLSAgICBTcGFjZUFuZFNldCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
QW5kU2V0OworICAgIHVzaW5nIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQg
PSBTcGFjZUFuZFNldDsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0
IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQ7CiAKICAgICBWZWN0b3I8SXNv
U3Vic3BhY2VQZXJWTSo+IHBlclZNSXNvU3Vic3BhY2VzOwogI3VuZGVmIERZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29DZWxsU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0
LmgKaW5kZXggY2NiODQ1ZWExMWZiZWE4ZTJhZGNlNTY2MWJkZWE4YzIxZTlhMmE5Zi4uOGJkN2U3
ZWE1YTk0MjNlYWVhYWMwZjk0OWMxMGM0YzFmMGJhN2NkMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb0NlbGxTZXQuaApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgPHd0Zi9CaXRt
YXAuaD4KICNpbmNsdWRlIDx3dGYvQ29uY3VycmVudFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9G
YXN0Qml0VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8
d3RmL05vbm1vdmFibGUuaD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CiAj
aW5jbHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KIApAQCAtNDAsNyArNDIsOSBAQCBjbGFzcyBJc29T
dWJzcGFjZTsKIC8vIENyZWF0ZSBhIHNldCBvZiBjZWxscyB0aGF0IGFyZSBpbiBhbiBJc29TdWJz
cGFjZS4gVGhpcyBhbGxvd3MgY29uY3VycmVudCBPKDEpIHNldCBpbnNlcnRpb24gYW5kCiAvLyBy
ZW1vdmFsLiBFYWNoIHN1Y2ggc2V0IHNob3VsZCBiZSB0aG91Z2h0IG9mIGFzIGEgMC44JSBpbmNy
ZWFzZSBpbiBvYmplY3Qgc2l6ZSBmb3Igb2JqZWN0cyBpbiB0aGF0CiAvLyBJc29TdWJzcGFjZSAo
aXQncyBsaWtlIGFkZGluZyAxIGJpdCBldmVyeSAxNiBieXRlcywgb3IgMSBiaXQgZXZlcnkgMTI4
IGJpdHMpLgotY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8
SXNvQ2VsbFNldD4geworY2xhc3MgSXNvQ2VsbFNldCBmaW5hbCA6IHB1YmxpYyBQYWNrZWRSYXdT
ZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElzb0Nl
bGxTZXQpOworICAgIFdURl9NQUtFX05PTk1PVkFCTEUoSXNvQ2VsbFNldCk7CiBwdWJsaWM6CiAg
ICAgSXNvQ2VsbFNldChJc29TdWJzcGFjZSYgc3Vic3BhY2UpOwogICAgIH5Jc29DZWxsU2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZjEyMzU1NzgyMGMzNGY4NzYyYzE4YTk1
MDNmM2E5NmY3YjRjNjQxMi4uZWQ4ZmIwZjUzZTU3YTVhNTAyZjFjYTI3NjA1NDY3MDkwMGU4YmU5
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE1LDggKzIxNSw2IEBAIHZvaWQg
SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCkKICAg
ICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRP
ZkNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpKSwgcmVzdWx0KTsKICAgICBlbHNlCiAgICAgICAgIGxv
YWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxv
Y2tGb3JDYWxsKCkpLCByZXN1bHQpOwotCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6b2Zmc2V0T2ZDb2RlQmxvY2soKSksIHJlc3VsdCk7CiAg
ICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlc3VsdCwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggM2UyYzZkZjYwYTQ3OGNhMTA5
YWFkYThjMzNkNjBjOTk0YjVkM2MwMS4uMWZkYjRhNTdkNTk0YmVlYTZlYmI4MGFhNjk3YmRhZDQz
ZjkwZjg3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQpAQCAtMTQ5Myw3ICsxNDkzLDYgQEAgbWFjcm8gZnVuY3Rpb25Gb3JD
YWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQogICAgIGxvYWRwIChGdW5jdGlvblJh
cmVEYXRhOjptX2V4ZWN1dGFibGUgLSAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFn
KSlbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgogLmlzRXhlY3V0YWJsZToKICAgICBs
b2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rl
cl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgbG9hZHAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6
bV9jb2RlQmxvY2tbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgogZW5kCiAKIG1hY3Jv
IGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQpAQCAt
MTUwNyw3ICsxNTA2LDYgQEAgbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0
ZXIodGFyZ2V0UmVnaXN0ZXIpCiAgICAgbG9hZHAgKEZ1bmN0aW9uUmFyZURhdGE6Om1fZXhlY3V0
YWJsZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKVt0YXJnZXRSZWdpc3Rl
cl0sIHRhcmdldFJlZ2lzdGVyCiAuaXNFeGVjdXRhYmxlOgogICAgIGxvYWRwIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRS
ZWdpc3RlcgotICAgIGxvYWRwIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6Om1fY29kZUJsb2Nr
W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKIGVuZAogCiBtYWNybyBub3RGdW5jdGlv
bkNvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCBjYTAwZmIx
YzZiNmRhNjk3NmZjYjE2ZTE2N2VmNjgyNDE2ZTE3MTYwLi45ZDY4NWE3NTJjNjVmODViNTU4NmRm
OGU1MzAwZDBhY2U2M2Q2YTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC02Myw3ICs2Myw3IEBAIERpcmVj
dEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldCh2bSwgZXhlY3V0YWJsZSwg
dW5saW5rZWRFdmFsQ29kZSk7CisgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jay5z
ZXQodm0sIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUpOwogCiAgICAgcmV0dXJuIGV4ZWN1
dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFs
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0
YWJsZS5jcHAKaW5kZXggZGQ4NDkzMzgyZmY2MTQxMGJiZWVlZGQwYmJlMjc3ZGM1MjA4ZTYyZi4u
Yjg4NDljY2UxMTU3YzZkMWUzNDFlYWVmZGZhMWY0MWI4YzJlZjEwMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcApAQCAtNTYsOCArNTYs
NiBAQCB2b2lkIEV2YWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGws
IFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgRXZhbEV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8RXZhbEV4ZWN1dGFibGUqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkRXZh
bENvZGVCbG9jayk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9ldmFsQ29kZUJs
b2NrKTsKICAgICBpZiAoVGVtcGxhdGVPYmplY3RNYXAqIG1hcCA9IHRoaXNPYmplY3QtPm1fdGVt
cGxhdGVPYmplY3RNYXAuZ2V0KCkpIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRoaXNPYmpl
Y3QtPmNlbGxMb2NrKCkgfTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICptYXApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRleCA2NjMw
NTRmYTU2N2IzZGFmYmYxMDNkMjg1OTczYWNkODE1NGJkMjc2Li5lODVhM2E3YTM1ZmVmY2IzYTY2
MmIwZmYwYzg0ZGQwYWExMjg5OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V2YWxFeGVjdXRhYmxlLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVkZSAiR2xvYmFs
RXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlVubGlua2VkRXZhbENvZGVCbG9jay5oIgogCkBAIC0z
OSw5ICszOCwxNCBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBHbG9iYWxFeGVjdXRh
YmxlIHsKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgCi0gICAgRXZh
bENvZGVCbG9jayogY29kZUJsb2NrKCkKKyAgICBFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxFdmFsQ29kZUJsb2NrKj4o
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dW53cmFwKG1fZXZhbENvZGVCbG9jay5nZXQoKSkp
OworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEV2YWxDb2RlQmxvY2sqPihCYXNlOjpjb2Rl
QmxvY2soKSk7CisgICAgfQorCisgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9jaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFVubGlu
a2VkRXZhbENvZGVCbG9jayo+KEJhc2U6OnVubGlua2VkQ29kZUJsb2NrKCkpOwogICAgIH0KIAog
ICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKQEAgLTYyLDEwICs2NiwxMCBAQCBj
bGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBHbG9iYWxFeGVjdXRhYmxlIHsKIAogICAgIERF
Q0xBUkVfSU5GTzsKIAotICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5s
aW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQotICAgIHVuc2lnbmVkIG51bUZ1
bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxv
Y2stPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7IH0KLSAgICB1bnNpZ25lZCBudW1U
b3BMZXZlbEZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+
bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KLSAgICBib29sIGFsbG93RGlyZWN0RXZhbENhY2hl
KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPmFsbG93RGlyZWN0RXZh
bENhY2hlKCk7IH0KKyAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiB1bmxpbmtl
ZENvZGVCbG9jaygpLT5udW1WYXJpYWJsZXMoKTsgfQorICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9u
SG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2soKS0+bnVtRnVu
Y3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKTsgfQorICAgIHVuc2lnbmVkIG51bVRvcExldmVsRnVu
Y3Rpb25EZWNscygpIHsgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrKCktPm51bWJlck9mRnVuY3Rp
b25EZWNscygpOyB9CisgICAgYm9vbCBhbGxvd0RpcmVjdEV2YWxDYWNoZSgpIGNvbnN0IHsgcmV0
dXJuIHVubGlua2VkQ29kZUJsb2NrKCktPmFsbG93RGlyZWN0RXZhbENhY2hlKCk7IH0KICAgICBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyPihtX25l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsgfQogICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CiAgICAg
VGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFwKFZNJik7CkBAIC04Miw4
ICs4Niw2IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUg
ewogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwogICAgIHVu
c2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogCi0gICAgV3JpdGVCYXJyaWVy
PEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fZXZhbENvZGVCbG9jazsKLSAgICBXcml0ZUJh
cnJpZXI8VW5saW5rZWRFdmFsQ29kZUJsb2NrPiBtX3VubGlua2VkRXZhbENvZGVCbG9jazsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplY3RNYXA+IG1fdGVtcGxhdGVPYmplY3RNYXA7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcAppbmRleCBkODFhYzYwNmY3NGQ4NTJiOGRiZWU5M2RkZDU2NzY1OGJlMDc0
OTk0Li5jN2VlMTQ5MDg3Zjc4ZjhiYzg4MTE4ZGE3YmI0MDkzOTE4YTliNjMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAK
QEAgLTI0LDEwICsyNCwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uT3ZlcnJpZGVzLmgiCisjaW5jbHVkZSAiSXNvQ2Vs
bFNldElubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTU1LDI3ICs1OCwzMyBAQCB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVz
dHJveShKU0NlbGwqIGNlbGwpCiAKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsK
LSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBlZGdlOworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gbnVsbHB0cjsKICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkKLSAgICAgICAg
ZWRnZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC5nZXQoKTsKKyAgICAgICAgY29kZUJsb2NrID0gY29k
ZUJsb2NrRm9yQ2FsbCgpOwogICAgIGVsc2UgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5k
ID09IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tGb3JDb25z
dHJ1Y3QuZ2V0KCk7CisgICAgICAgIGNvZGVCbG9jayA9IGNvZGVCbG9ja0ZvckNvbnN0cnVjdCgp
OwogICAgIH0KLSAgICBpZiAoIWVkZ2UpCisgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+
KGVkZ2UtPmNvZGVCbG9jaygpLT5iYXNlbGluZUFsdGVybmF0aXZlKCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KGNvZGVCbG9jay0+YmFzZWxpbmVBbHRlcm5h
dGl2ZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3N0YXRpYyBpbmxpbmUg
Ym9vbCBzaG91bGRLZWVwSW5Db25zdHJhaW50U2V0KFZpc2l0b3ImIHZpc2l0b3IsIENvZGVCbG9j
ayogY29kZUJsb2NrRm9yQ2FsbCwgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3QpCit7
CisgICAgLy8gSWYgZWl0aGVyIG9mIENvZGVCbG9ja3MgaXMgbm90IG1hcmtlZCB5ZXQsIHdlIHdp
bGwgcnVuIG91dHB1dC1jb25zdHJhaW50cy4KKyAgICByZXR1cm4gKGNvZGVCbG9ja0ZvckNhbGwg
JiYgIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrRm9yQ2FsbCkpIHx8IChjb2RlQmxvY2tGb3JD
b25zdHJ1Y3QgJiYgIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrRm9yQ29uc3RydWN0KSk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CiB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogeworICAg
IFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV90b3BMZXZlbEV4ZWN1dGFibGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
Y29kZUJsb2NrRm9yQ2FsbCk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jb2Rl
QmxvY2tGb3JDb25zdHJ1Y3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5s
aW5rZWRFeGVjdXRhYmxlKTsKICAgICBpZiAoUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpc09iamVj
dC0+bV9yYXJlRGF0YS5nZXQoKSkgewogICAgICAgICB2aXNpdG9yLmFwcGVuZChyYXJlRGF0YS0+
bV9jYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmVJRCk7CkBAIC04NiwxMCArOTUsNDMgQEAgdm9pZCBG
dW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRv
ciYgdmlzaXRvcikKICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChlbnRyeS52YWx1ZSk7
CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBTaW5jZSBGdW5jdGlvbkV4ZWN1dGFibGUncyBm
aW5hbGl6ZXIgYWx3YXlzIG5lZWRzIHRvIGJlIHJ1biwgd2UgZG8gbm90IHRyYWNrIEZ1bmN0aW9u
RXhlY3V0YWJsZSB2aWEgZmluYWxpemVyU2V0LgorICAgIGF1dG8qIGNvZGVCbG9ja0ZvckNhbGwg
PSB0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCk7CisgICAgaWYgKGNvZGVCbG9j
a0ZvckNhbGwpCisgICAgICAgIHZpc2l0Q29kZUJsb2NrRWRnZSh2aXNpdG9yLCBjb2RlQmxvY2tG
b3JDYWxsKTsKKyAgICBhdXRvKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3QgPSB0aGlzT2JqZWN0LT5t
X2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKTsKKyAgICBpZiAoY29kZUJsb2NrRm9yQ29uc3Ry
dWN0KQorICAgICAgICB2aXNpdENvZGVCbG9ja0VkZ2UodmlzaXRvciwgY29kZUJsb2NrRm9yQ29u
c3RydWN0KTsKKworICAgIGlmIChzaG91bGRLZWVwSW5Db25zdHJhaW50U2V0KHZpc2l0b3IsIGNv
ZGVCbG9ja0ZvckNhbGwsIGNvZGVCbG9ja0ZvckNvbnN0cnVjdCkpCisgICAgICAgIHZtLmhlYXAu
ZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQub3V0cHV0Q29uc3RyYWludHNTZXQuYWRkKHRo
aXNPYmplY3QpOwogfQogCiBERUZJTkVfVklTSVRfQ0hJTERSRU4oRnVuY3Rpb25FeGVjdXRhYmxl
KTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxl
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgVk0mIHZtID0gdmlzaXRvci52bSgpOworICAgIGF1dG8qIGV4ZWN1dGFibGUg
PSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgYXV0byogY29kZUJsb2Nr
Rm9yQ2FsbCA9IGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ2FsbC5nZXQoKTsKKyAgICBpZiAo
Y29kZUJsb2NrRm9yQ2FsbCkgeworICAgICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJs
b2NrRm9yQ2FsbCkpCisgICAgICAgICAgICBydW5Db25zdHJhaW50KE5vTG9ja2luZ05lY2Vzc2Fy
eSwgdmlzaXRvciwgY29kZUJsb2NrRm9yQ2FsbCk7CisgICAgfQorICAgIGF1dG8qIGNvZGVCbG9j
a0ZvckNvbnN0cnVjdCA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpOworICAg
IGlmIChjb2RlQmxvY2tGb3JDb25zdHJ1Y3QpIHsKKyAgICAgICAgaWYgKCF2aXNpdG9yLmlzTWFy
a2VkKGNvZGVCbG9ja0ZvckNvbnN0cnVjdCkpCisgICAgICAgICAgICBydW5Db25zdHJhaW50KE5v
TG9ja2luZ05lY2Vzc2FyeSwgdmlzaXRvciwgY29kZUJsb2NrRm9yQ29uc3RydWN0KTsKKyAgICB9
CisKKyAgICBpZiAoIXNob3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQodmlzaXRvciwgY29kZUJsb2Nr
Rm9yQ2FsbCwgY29kZUJsb2NrRm9yQ29uc3RydWN0KSkKKyAgICAgICAgdm0uaGVhcC5mdW5jdGlv
bkV4ZWN1dGFibGVTcGFjZUFuZFNldC5vdXRwdXRDb25zdHJhaW50c1NldC5yZW1vdmUoZXhlY3V0
YWJsZSk7Cit9CisKK0RFRklORV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlOVFMoRnVuY3Rpb25FeGVj
dXRhYmxlKTsKKwogRnVuY3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21H
bG9iYWxDb2RlKAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgCiAgICAgSlNPYmplY3QqJiBl
eGNlcHRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5j
dGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCAwYTkxMmFlNWVm
NzJkMDE1OGViZDVjZWRjZTU2MjRiNjE1MTkyYWJlLi4zN2UwYzVkYjYxYWNhNjQyZTVlZmRmNjg2
MTJmMDIzMWM0NThmZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlNvdXJj
ZUNvZGUuaCIKQEAgLTY5LDM0ICs2OCwzMSBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgLy8gUmV0dXJucyBlaXRoZXIgY2Fs
bCBvciBjb25zdHJ1Y3QgYnl0ZWNvZGUuIFRoaXMgY2FuIGJlIGFwcHJvcHJpYXRlCiAgICAgLy8g
Zm9yIGFuc3dlcmluZyBxdWVzdGlvbnMgdGhhdCB0aGF0IGRvbid0IHZhcnkgYmV0d2VlbiBjYWxs
IGFuZCBjb25zdHJ1Y3QgLS0KICAgICAvLyBmb3IgZXhhbXBsZSwgYXJndW1lbnRzUmVnaXN0ZXIo
KS4KLSAgICBGdW5jdGlvbkNvZGVCbG9jayogZWl0aGVyQ29kZUJsb2NrKCkKKyAgICBGdW5jdGlv
bkNvZGVCbG9jayogZWl0aGVyQ29kZUJsb2NrKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2U7Ci0gICAgICAgIGlmIChtX2NvZGVCbG9ja0ZvckNh
bGwpCi0gICAgICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCk7
Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAoZWRnZSkpOworICAgICAgICBpZiAoYXV0byogcmVz
dWx0ID0gY29kZUJsb2NrRm9yQ2FsbCgpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgcmV0dXJuIGNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpOwogICAgIH0KICAgICAgICAgCiAg
ICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
ICEhbV9jb2RlQmxvY2tGb3JDYWxsOworICAgICAgICByZXR1cm4gISFjb2RlQmxvY2tGb3JDYWxs
KCk7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9ja0ZvckNhbGwoKQor
ICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDYWxsKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpKSk7CisgICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihtX2NvZGVCbG9ja0Zv
ckNhbGwuZ2V0KCkpOwogICAgIH0KIAogICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3Qo
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEhbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7
CisgICAgICAgIHJldHVybiAhIWNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpOwogICAgIH0KIAotICAg
IEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKQorICAgIEZ1bmN0aW9u
Q29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U6OnVud3JhcChtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKSkpOworICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4obV9jb2RlQmxvY2tGb3JD
b25zdHJ1Y3QuZ2V0KCkpOwogICAgIH0KICAgICAgICAgCiAgICAgYm9vbCBpc0dlbmVyYXRlZEZv
cihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0xMjIsNiArMTE4LDggQEAgY2xhc3Mg
RnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAg
ICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgfQogCisgICAgRnVu
Y3Rpb25Db2RlQmxvY2sqIHJlcGxhY2VDb2RlQmxvY2tXaXRoKFZNJiwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCwgQ29kZUJsb2NrKik7CisKICAgICBSZWZQdHI8VHlwZVNldD4gcmV0dXJuU3RhdGVt
ZW50VHlwZVNldCgpIAogICAgIHsKICAgICAgICAgUmFyZURhdGEmIHJhcmVEYXRhID0gZW5zdXJl
UmFyZURhdGEoKTsKQEAgLTE2Miw2ICsxNjAsNyBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgU291cmNlQ29kZSBjbGFzc1Nv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jbGFzc1NvdXJjZSgp
OyB9CiAKICAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOworICAgIERFQ0xBUkVfVklTSVRfT1VU
UFVUX0NPTlNUUkFJTlRTOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCiAgICAg
ewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG8sIFR5cGVJbmZvKEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKQEAgLTMzMSw4ICszMzAsOCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRh
PiBtX3JhcmVEYXRhOwogICAgIFdyaXRlQmFycmllcjxTY3JpcHRFeGVjdXRhYmxlPiBtX3RvcExl
dmVsRXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU+IG1fdW5saW5rZWRFeGVjdXRhYmxlOwotICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlPiBtX2NvZGVCbG9ja0ZvckNhbGw7Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0OworICAgIFdyaXRl
QmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKKyAgICBXcml0ZUJhcnJpZXI8
Q29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKICAgICBJbmZlcnJlZFZhbHVlPEpT
RnVuY3Rpb24+IG1fc2luZ2xldG9uOwogICAgIEJveDxJbmxpbmVXYXRjaHBvaW50U2V0PiBtX3Bv
bHlQcm90b1dhdGNocG9pbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oCmluZGV4IGM5YTBiMTIyNDA0
MzMyOTcxYTE2YzI4YTZkMTVmNTRlZjNmNTBkOGMuLjQ3M2ZmYzMwY2Y5OWI5OTJlNmZiMGZmMzZj
MTA1NmZlMzk3MmQxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgKQEAgLTMzLDkgKzMzLDI1IEBAIG5h
bWVzcGFjZSBKU0MgewogaW5saW5lIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseShWTSYgdm0pCiB7CiAgICAgbV9zaW5nbGV0b24uZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkodm0pOworICAgIGZpbmFsaXplQ29kZUJsb2NrRWRnZSh2bSwgbV9jb2RlQmxvY2tG
b3JDYWxsKTsKKyAgICBmaW5hbGl6ZUNvZGVCbG9ja0VkZ2Uodm0sIG1fY29kZUJsb2NrRm9yQ29u
c3RydWN0KTsKKyAgICB2bS5oZWFwLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0Lm91dHB1
dENvbnN0cmFpbnRzU2V0LnJlbW92ZSh0aGlzKTsKIH0KIAotSlNTdHJpbmcqIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK2lubGluZSBG
dW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpyZXBsYWNlQ29kZUJsb2NrV2l0
aChWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgQ29kZUJsb2NrKiBuZXdDb2Rl
QmxvY2spCit7CisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgRnVuY3Rp
b25Db2RlQmxvY2sqIG9sZENvZGVCbG9jayA9IGNvZGVCbG9ja0ZvckNhbGwoKTsKKyAgICAgICAg
bV9jb2RlQmxvY2tGb3JDYWxsLnNldCh2bSwgdGhpcywgbmV3Q29kZUJsb2NrKTsKKyAgICAgICAg
cmV0dXJuIG9sZENvZGVCbG9jazsKKyAgICB9CisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgRnVuY3Rpb25Db2RlQmxvY2sqIG9sZENvZGVCbG9jayA9IGNvZGVCbG9j
a0ZvckNvbnN0cnVjdCgpOworICAgIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LnNldCh2bSwgdGhp
cywgbmV3Q29kZUJsb2NrKTsKKyAgICByZXR1cm4gb2xkQ29kZUJsb2NrOworfQorCitpbmxpbmUg
SlNTdHJpbmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKIHsKICAgICBSYXJlRGF0YSYgcmFyZURhdGEgPSBlbnN1cmVSYXJlRGF0YSgp
OwogICAgIGlmICghcmFyZURhdGEubV9hc1N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggNzVlODRiMzhmZjcyN2Iz
MmM4ZWIwMDExNmEwYjFkMGFkODQwYmZlZC4uMTg3NWYwMGFhYjYxMTA5NzgyZDQzMDg1ODg4YmM0
NzRiOGZjNzhlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xv
YmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xv
YmFsRXhlY3V0YWJsZS5jcHAKQEAgLTI2LDEwICsyNiw2MyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkdsb2JhbEV4ZWN1dGFibGUuaCIKIAorI2luY2x1ZGUgIklzb0NlbGxTZXRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IAogY29uc3QgQ2xhc3NJbmZvIEdsb2JhbEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkdsb2JhbEV4
ZWN1dGFibGUiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoR2xvYmFsRXhlY3V0YWJsZSkgfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRv
cj4KK3ZvaWQgR2xvYmFsRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxs
LCBWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8R2xv
YmFsRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoZXhl
Y3V0YWJsZSwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGV4ZWN1dGFibGUsIHZp
c2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKGV4ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxv
Y2spOworCisgICAgaWYgKGF1dG8qIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9jaygp
KSB7CisgICAgICAgIC8vIElmIHRoZSBDb2RlQmxvY2tzIGlzIG5vdCBtYXJrZWQgeWV0LCB3ZSB3
aWxsIHJ1biBvdXRwdXQtY29uc3RyYWludHMuCisgICAgICAgIC8vIFdlIG1haW50YWluIHRoZSBp
bnZhcmlhbnQgdGhhdCwgd2hlbmV2ZXIgd2Ugc2VlIHVubWFya2VkIENvZGVCbG9jaywgdGhlbiB3
ZSBtdXN0IHJ1biBmaW5hbGl6ZXIuCisgICAgICAgIC8vIEFuZCB3aGVuZXZlciB3ZSBzZXQgYSBi
aXQgb24gb3V0cHV0Q29uc3RyYWludHNTZXQsIHdlIG11c3QgYWxyZWFkeSBzZXQgYSBiaXQgaW4g
ZmluYWxpemVyU2V0LgorICAgICAgICAvLyBUaGlzIGlzIGVuc3VyZWQgYmVjYXVzZSB1bm1hcmtl
ZCAtPiBtYXJrZWQgc3RhdHVzIGNoYW5nZSBpcyBhbHdheXMgbW9ub3RvbmljLgorICAgICAgICBp
ZiAodmlzaXRDb2RlQmxvY2tFZGdlKHZpc2l0b3IsIGNvZGVCbG9jaykpCisgICAgICAgICAgICBI
ZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6OmZpbmFsaXplclNldEZvcigqZXhlY3V0
YWJsZS0+c3Vic3BhY2UoKSkuYWRkKGV4ZWN1dGFibGUpOworICAgICAgICBpZiAoIXZpc2l0b3Iu
aXNNYXJrZWQoY29kZUJsb2NrKSkgeworICAgICAgICAgICAgSGVhcDo6U2NyaXB0RXhlY3V0YWJs
ZVNwYWNlQW5kU2V0OjpvdXRwdXRDb25zdHJhaW50c1NldEZvcigqZXhlY3V0YWJsZS0+c3Vic3Bh
Y2UoKSkuYWRkKGV4ZWN1dGFibGUpOworICAgICAgICAgICAgQVNTRVJUKEhlYXA6OlNjcmlwdEV4
ZWN1dGFibGVTcGFjZUFuZFNldDo6ZmluYWxpemVyU2V0Rm9yKCpleGVjdXRhYmxlLT5zdWJzcGFj
ZSgpKS5jb250YWlucyhleGVjdXRhYmxlKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0RFRklO
RV9WSVNJVF9DSElMRFJFTihHbG9iYWxFeGVjdXRhYmxlKTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VmlzaXRvcj4KK3ZvaWQgR2xvYmFsRXhlY3V0YWJsZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50c0lt
cGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIGV4ZWN1dGFi
bGUgPSBqc0Nhc3Q8R2xvYmFsRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIGlmIChDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9jaygpKSB7CisgICAgICAgIGlmICghdmlz
aXRvci5pc01hcmtlZChjb2RlQmxvY2spKQorICAgICAgICAgICAgcnVuQ29uc3RyYWludChOb0xv
Y2tpbmdOZWNlc3NhcnksIHZpc2l0b3IsIGNvZGVCbG9jayk7CisgICAgICAgIGlmICh2aXNpdG9y
LmlzTWFya2VkKGNvZGVCbG9jaykpCisgICAgICAgICAgICBIZWFwOjpTY3JpcHRFeGVjdXRhYmxl
U3BhY2VBbmRTZXQ6Om91dHB1dENvbnN0cmFpbnRzU2V0Rm9yKCpleGVjdXRhYmxlLT5zdWJzcGFj
ZSgpKS5yZW1vdmUoZXhlY3V0YWJsZSk7CisgICAgfQorfQorCitERUZJTkVfVklTSVRfT1VUUFVU
X0NPTlNUUkFJTlRTKEdsb2JhbEV4ZWN1dGFibGUpOworCitDb2RlQmxvY2sqIEdsb2JhbEV4ZWN1
dGFibGU6OnJlcGxhY2VDb2RlQmxvY2tXaXRoKFZNJiB2bSwgQ29kZUJsb2NrKiBuZXdDb2RlQmxv
Y2spCit7CisgICAgQ29kZUJsb2NrKiBvbGRDb2RlQmxvY2sgPSBjb2RlQmxvY2soKTsKKyAgICBt
X2NvZGVCbG9jay5zZXQodm0sIHRoaXMsIG5ld0NvZGVCbG9jayk7CisgICAgcmV0dXJuIG9sZENv
ZGVCbG9jazsKK30KKwordm9pZCBHbG9iYWxFeGVjdXRhYmxlOjpmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseShWTSYgdm0pCit7CisgICAgZmluYWxpemVDb2RlQmxvY2tFZGdlKHZtLCBtX2NvZGVCbG9j
ayk7CisgICAgSGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0OjpvdXRwdXRDb25zdHJh
aW50c1NldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOworICAgIEhlYXA6OlNjcmlwdEV4
ZWN1dGFibGVTcGFjZUFuZFNldDo6ZmluYWxpemVyU2V0Rm9yKCpzdWJzcGFjZSgpKS5yZW1vdmUo
dGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5oCmluZGV4IDkyNzRjOWNkM2Q2ZDIxMmJhOGI2
NTZiYTNjODIwMzA1MTU1NjBiNTQuLjNkMWRlOWUwYWNmNTg2YjUxMmMxZmNmZTM3ZmJkOWUxYmYx
NGM5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV4
ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFeGVj
dXRhYmxlLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0YWJsZS5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ4LDEyICs0NywzMiBAQCBjbGFzcyBHbG9iYWxFeGVj
dXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICBBU1NFUlQoZW5kQ29s
dW1uICE9IFVJTlRfTUFYKTsKICAgICB9CiAKKyAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOwor
ICAgIERFQ0xBUkVfVklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTOworCisgICAgdm9pZCBmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseShWTSYpOworCiBwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFNj
cmlwdEV4ZWN1dGFibGU7CiAgICAgR2xvYmFsRXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBib29sIGlzSW5TdHJpY3RD
b250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzSW5B
cnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxD
b250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAg
IDogQmFzZShzdHJ1Y3R1cmUsIHZtLCBzb3VyY2VDb2RlLCBpc0luU3RyaWN0Q29udGV4dCA/IFN0
cmljdE1vZGVMZXhpY2FsRmVhdHVyZSA6IE5vTGV4aWNhbEZlYXR1cmVzLCBkZXJpdmVkQ29udGV4
dFR5cGUsIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9u
LCBldmFsQ29udGV4dFR5cGUsIGludHJpbnNpYykKICAgICB7CiAgICAgfQogCisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2soKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29kZUJsb2Nr
LmdldCgpOworICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
aygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV91bmxpbmtlZENvZGVCbG9jay5nZXQo
KTsKKyAgICB9CisKKyAgICBDb2RlQmxvY2sqIHJlcGxhY2VDb2RlQmxvY2tXaXRoKFZNJiwgQ29k
ZUJsb2NrKik7CisKKyAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKKyAg
ICBXcml0ZUJhcnJpZXI8VW5saW5rZWRDb2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2s7CiAg
ICAgaW50IG1fbGFzdExpbmUgeyAtMSB9OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uIHsgVUlO
VF9NQVggfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDViYzU4ODJiMDAyYzI4NTY2NTM1MjZj
NDA0ZGQ5Y2YxNTQ0NTY1YzYuLmU5ZTFkZTM1YTA1YjNiNGMzMzg2NzdmNWM1NjgzMTkyMzhmODg5
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZh
bEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGly
ZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGlubGluZSBJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGVJbXBsKEpTR2xvYmFs
T2JqZWN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGV4ZWN1dGFibGUt
Pm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldCh2bSwgZXhlY3V0YWJsZSwgdW5saW5rZWRFdmFs
Q29kZSk7CisgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jay5zZXQodm0sIGV4ZWN1
dGFibGUsIHVubGlua2VkRXZhbENvZGUpOwogCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGEzNzZh
ZjVlZWEwZGU2YjUxNzBjNGZiNDQ3MzczMGQyNTgzMzFjNTIuLmM5YjcxNjA3MGJiZmQwYWEwYjRi
N2NjNGVlMmFiODc1YmU5ZjU0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5o
IgogI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CisjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkdlbmVy
YXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmNwcAppbmRleCBhYjdiZWNkOWM2N2EwOGMyZmUyNThmN2RiOTEwNTRmMmJhZDc5
ZDExLi4wODEwZTFkMmQxNjUzMGQwZDg2MjU0ZDAwYzM0NzVmNmUxYTQ1OGM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC05Niw3
ICs5Niw3IEBAIFN5bmNocm9ub3VzbmVzcyBKU01vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNjcmlwCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgU3luY2hyb25vdXNuZXNzOjpTeW5jKTsKICAgICBtX21vZHVsZVByb2dyYW1FeGVj
dXRhYmxlLnNldCh2bSwgdGhpcywgZXhlY3V0YWJsZSk7CiAKLSAgICByZXR1cm4gZXhlY3V0YWJs
ZS0+dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCktPmlzQXN5bmMoKSA/IFN5bmNocm9u
b3VzbmVzczo6QXN5bmMgOiBTeW5jaHJvbm91c25lc3M6OlN5bmM7CisgICAgcmV0dXJuIGV4ZWN1
dGFibGUtPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXN5bmMoKSA/IFN5bmNocm9ub3VzbmVzczo6
QXN5bmMgOiBTeW5jaHJvbm91c25lc3M6OlN5bmM7CiB9CiAKIHZvaWQgSlNNb2R1bGVSZWNvcmQ6
Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSwgSlNWYWx1ZSBz
Y3JpcHRGZXRjaGVyKQpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omlu
c3RhbnRpYXRlRGVjbGFyYXRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1vZHVs
CiAgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDE2LWEtaXYuCiAgICAgLy8gSW5pdGlh
bGl6ZSBoZWFwIGFsbG9jYXRlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCiAgICAgLy8gVGhleSBj
YW4gYmUgY2FsbGVkIGJlZm9yZSB0aGUgYm9keSBvZiB0aGUgbW9kdWxlIGlzIGV4ZWN1dGVkIHVu
ZGVyIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KLSAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpOworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+dW5s
aW5rZWRDb2RlQmxvY2soKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgbnVtYmVyT2ZGdW5jdGlv
bnMgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IGkgPCBudW1i
ZXJPZkZ1bmN0aW9uczsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlv
bkRlY2woaSk7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZS0+
Z2V0KHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCkuaW1wbCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRh
YmxlLmNwcAppbmRleCAyNDdmYWE2NWViY2U2ZWEzOTQ3NmNjMjZlZjRkMmU1MjZkNTllNTY4Li44
MTJjMWM3NWE1NTJkNWI2YzkyZWNkNjNlNDQ5NTE1MWQ2NGJhNzc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUu
Y3BwCkBAIC02Miw3ICs2Miw3IEBAIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrLnNldChnbG9iYWxPYmplY3QtPnZtKCksIGV4ZWN1dGFibGUsIHVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGUpOworICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxv
Y2suc2V0KGdsb2JhbE9iamVjdC0+dm0oKSwgZXhlY3V0YWJsZSwgdW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZSk7CiAKICAgICBleGVjdXRhYmxlLT5tX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFi
bGUuc2V0KGdsb2JhbE9iamVjdC0+dm0oKSwgZXhlY3V0YWJsZSwganNDYXN0PFN5bWJvbFRhYmxl
Kj4odW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZS0+Y29uc3RhbnRSZWdpc3RlcihWaXJ0dWFsUmVn
aXN0ZXIodW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZS0+bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xU
YWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQoKSkpLmdldCgpKS0+Y2xvbmVTY29wZVBhcnQoZ2xv
YmFsT2JqZWN0LT52bSgpKSk7CiAKQEAgLTg1LDkgKzg1LDcgQEAgdm9pZCBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNp
dG9yKQogICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV91bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsKICAgICBpZiAoVGVtcGxhdGVPYmpl
Y3RNYXAqIG1hcCA9IHRoaXNPYmplY3QtPm1fdGVtcGxhdGVPYmplY3RNYXAuZ2V0KCkpIHsKICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IHRoaXNPYmplY3QtPmNlbGxMb2NrKCkgfTsKICAgICAgICAg
Zm9yIChhdXRvJiBlbnRyeSA6ICptYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCA5MjYzNWIzMjIxYjJj
NTQxNGFjYTc2ZDE4Yjk4ZThiMWFjOGRlYTE1Li4zOWMyYWE5NGIyY2U0OTcwYjc1Y2U4MGFiYzk1
MjljNjI4OTM5Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVk
ZSAiR2xvYmFsRXhlY3V0YWJsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ2LDkgKzQ1LDE0
IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEdsb2JhbEV4
ZWN1dGFibGUgewogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAgIE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaygpCisgICAgTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayogY29kZUJsb2NrKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnVu
d3JhcChtX21vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oQmFzZTo6Y29kZUJsb2NrKCkpOwor
ICAgIH0KKworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2soKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihCYXNlOjp1bmxpbmtlZENvZGVCbG9jaygpKTsKICAg
ICB9CiAKICAgICBSZWY8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCkBAIC02Myw3ICs2Nyw2
IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEdsb2JhbEV4
ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBt
X3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQogICAgIGJvb2wgaXNBc3lu
YygpIGNvbnN0IHsgcmV0dXJuIGZlYXR1cmVzKCkgJiBBd2FpdEZlYXR1cmU7IH0KIAogICAgIFN5
bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkgeyByZXR1cm4gbV9tb2R1
bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgpOyB9CkBAIC03OCw5ICs4MSw3IEBAIGNsYXNz
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUg
ewogCiAgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKIAotICAgIFdyaXRlQmFycmllcjxVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOwogICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9tb2R1bGVFbnZpcm9ubWVudFN5
bWJvbFRhYmxlOwotICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBt
X21vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRlT2Jq
ZWN0TWFwPiBtX3RlbXBsYXRlT2JqZWN0TWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCmluZGV4IDczMjlmZTI3MDE4
Njg0YWIwNWM2YTQ3NzZmYWQyOTZlNTgyODlkNmMuLmNlODI0MmY5ODM1ZmI2M2NhYmZhMTQ3N2Rl
OWEyMjNmYjBhZjk4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKQEAgLTE1MCw4ICsxNTAsNyBAQCBKU09iamVjdCogUHJv
Z3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqCiAgICAgICAgIH0KICAgICB9CiAKLQotICAgIG1fdW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrLnNldCh2bSwgdGhpcywgdW5saW5rZWRDb2RlQmxvY2spOworICAgIG1fdW5saW5rZWRD
b2RlQmxvY2suc2V0KHZtLCB0aGlzLCB1bmxpbmtlZENvZGVCbG9jayk7CiAKICAgICBCYXRjaGVk
VHJhbnNpdGlvbk9wdGltaXplciBvcHRpbWl6ZXIodm0sIGdsb2JhbE9iamVjdCk7CiAKQEAgLTIx
Niw4ICsyMTUsNiBAQCB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbChK
U0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihjZWxsKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jayk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9wcm9ncmFtQ29kZUJsb2NrKTsKICAgICBpZiAoVGVtcGxhdGVPYmplY3RNYXAq
IG1hcCA9IHRoaXNPYmplY3QtPm1fdGVtcGxhdGVPYmplY3RNYXAuZ2V0KCkpIHsKICAgICAgICAg
TG9ja2VyIGxvY2tlciB7IHRoaXNPYmplY3QtPmNlbGxMb2NrKCkgfTsKICAgICAgICAgZm9yIChh
dXRvJiBlbnRyeSA6ICptYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCA1MTM0OTkwMjA0MDc4MTNjNTllMzI4OGExOGRmMjli
YzExMWJmZWMyLi40Mzk0ZTdmZmNiNjhiMjE1MTdjODljY2FiMjhhODM1NjVmOTJhY2UzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgK
QEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVkZSAiR2xvYmFsRXhlY3V0YWJsZS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTU2LDkgKzU1LDE0IEBAIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIGZp
bmFsIDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUgewogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKIAotICAgIFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaygpCisgICAgUHJv
Z3JhbUNvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8UHJvZ3JhbUNvZGVCbG9jayo+KEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6
OnVud3JhcChtX3Byb2dyYW1Db2RlQmxvY2suZ2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4oQmFzZTo6Y29kZUJsb2NrKCkpOworICAgIH0KKwor
ICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2soKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2sqPihCYXNlOjp1bmxpbmtlZENvZGVCbG9jaygpKTsKICAgICB9CiAKICAgICBSZWY8SklUQ29k
ZT4gZ2VuZXJhdGVkSklUQ29kZSgpCkBAIC04Myw4ICs4Nyw2IEBAIGNsYXNzIFByb2dyYW1FeGVj
dXRhYmxlIGZpbmFsIDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9W
SVNJVF9DSElMRFJFTjsKIAotICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2s+IG1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOwotICAgIFdyaXRlQmFycmllcjxFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlPiBtX3Byb2dyYW1Db2RlQmxvY2s7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFRlbXBsYXRlT2JqZWN0TWFwPiBtX3RlbXBsYXRlT2JqZWN0TWFwOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAppbmRl
eCBjNmE5ZWFiNjcxNGNlNDJjNDEwODdiZGIwOGZjOTIxNzRhYzhlY2JmLi43OWZiM2U3OGIzMzM4
OWZhNTc0NWYwZjVkYTZhNWVlN2RjNmY0Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXZhbENvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkZ1bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkdsb2JhbEV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJJc29DZWxsU2V0
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgpAQCAtODYsMjAgKzg3LDIwIEBAIHZvaWQgU2Ny
aXB0RXhlY3V0YWJsZTo6Y2xlYXJDb2RlKElzb0NlbGxTZXQmIGNsZWFyYWJsZUNvZGVTZXQpCiAg
ICAgfQogICAgIGNhc2UgRXZhbEV4ZWN1dGFibGVUeXBlOiB7CiAgICAgICAgIEV2YWxFeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPih0aGlzKTsKLSAg
ICAgICAgZXhlY3V0YWJsZS0+bV9ldmFsQ29kZUJsb2NrLmNsZWFyKCk7Ci0gICAgICAgIGV4ZWN1
dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLmNsZWFyKCk7CisgICAgICAgIGV4ZWN1dGFi
bGUtPm1fY29kZUJsb2NrLmNsZWFyKCk7CisgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRD
b2RlQmxvY2suY2xlYXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgUHJvZ3Jh
bUV4ZWN1dGFibGVUeXBlOiB7CiAgICAgICAgIFByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKLSAgICAgICAgZXhlY3V0
YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1f
dW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7CisgICAgICAgIGV4ZWN1dGFibGUtPm1f
Y29kZUJsb2NrLmNsZWFyKCk7CisgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxv
Y2suY2xlYXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGVUeXBlOiB7CiAgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0gc3RhdGljX2Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKLSAg
ICAgICAgZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7Ci0gICAg
ICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7
CisgICAgICAgIGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrLmNsZWFyKCk7CisgICAgICAgIGV4ZWN1
dGFibGUtPm1fdW5saW5rZWRDb2RlQmxvY2suY2xlYXIoKTsKICAgICAgICAgZXhlY3V0YWJsZS0+
bV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmNsZWFyKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTEwOCw3ICsxMDksNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OmNsZWFyQ29k
ZShJc29DZWxsU2V0JiBjbGVhcmFibGVDb2RlU2V0KQogICAgICAgICBicmVhazsKICAgICB9CiAK
LSAgICBBU1NFUlQoJkhlYXA6OlNwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkpID09ICZj
bGVhcmFibGVDb2RlU2V0KTsKKyAgICBBU1NFUlQoJkhlYXA6OlNjcmlwdEV4ZWN1dGFibGVTcGFj
ZUFuZFNldDo6Y2xlYXJhYmxlQ29kZVNldEZvcigqc3Vic3BhY2UoKSkgPT0gJmNsZWFyYWJsZUNv
ZGVTZXQpOwogICAgIGNsZWFyYWJsZUNvZGVTZXQucmVtb3ZlKHRoaXMpOwogfQogCkBAIC0xMzEs
OCArMTMyLDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShWTSYgdm0sIENv
ZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9jaywgQ29kZVR5cGUKICAgICAgICAgCiAgICAgICAgIEFT
U0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKICAgICAgICAgCi0gICAgICAgIG9sZENvZGVCbG9j
ayA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGVBbmRVbndyYXAoZXhlY3V0
YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrLmdldCgpKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV9w
cm9ncmFtQ29kZUJsb2NrLnNldE1heUJlTnVsbCh2bSwgdGhpcywgRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZTo6d3JhcEFuZEFjdGl2YXRlKGNvZGVCbG9jaykpOworICAgICAgICBvbGRDb2RlQmxv
Y2sgPSBleGVjdXRhYmxlLT5yZXBsYWNlQ29kZUJsb2NrV2l0aCh2bSwgY29kZUJsb2NrKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xNDIsOCArMTQyLDcgQEAgdm9pZCBTY3JpcHRFeGVj
dXRhYmxlOjppbnN0YWxsQ29kZShWTSYgdm0sIENvZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9jaywg
Q29kZVR5cGUKIAogICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CiAKLSAgICAg
ICAgb2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZUFu
ZFVud3JhcChleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCkpOwotICAg
ICAgICBleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2suc2V0TWF5QmVOdWxsKHZt
LCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5kQWN0aXZhdGUoY29kZUJs
b2NrKSk7CisgICAgICAgIG9sZENvZGVCbG9jayA9IGV4ZWN1dGFibGUtPnJlcGxhY2VDb2RlQmxv
Y2tXaXRoKHZtLCBjb2RlQmxvY2spOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE1Myw4
ICsxNTIsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2bSwgQ29k
ZUJsb2NrKiBnZW5lcmljQ29kZUJsb2NrLCBDb2RlVHlwZQogICAgICAgICAKICAgICAgICAgQVNT
RVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOwogICAgICAgICAKLSAgICAgICAgb2xkQ29kZUJsb2Nr
ID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZUFuZFVud3JhcChleGVjdXRh
YmxlLT5tX2V2YWxDb2RlQmxvY2suZ2V0KCkpOwotICAgICAgICBleGVjdXRhYmxlLT5tX2V2YWxD
b2RlQmxvY2suc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
Ojp3cmFwQW5kQWN0aXZhdGUoY29kZUJsb2NrKSk7CisgICAgICAgIG9sZENvZGVCbG9jayA9IGV4
ZWN1dGFibGUtPnJlcGxhY2VDb2RlQmxvY2tXaXRoKHZtLCBjb2RlQmxvY2spOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMTYyLDE2ICsxNjAsNyBAQCB2b2lkIFNjcmlwdEV4
ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2bSwgQ29kZUJsb2NrKiBnZW5lcmljQ29kZUJsb2Nr
LCBDb2RlVHlwZQogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nh
c3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyk7CiAgICAgICAgIEZ1bmN0aW9uQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KGdlbmVyaWNDb2Rl
QmxvY2spOwogICAgICAgICAKLSAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgIGNhc2Ug
Q29kZUZvckNhbGw6Ci0gICAgICAgICAgICBvbGRDb2RlQmxvY2sgPSBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOjpkZWFjdGl2YXRlQW5kVW53cmFwKGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9y
Q2FsbC5nZXQoKSk7Ci0gICAgICAgICAgICBleGVjdXRhYmxlLT5tX2NvZGVCbG9ja0ZvckNhbGwu
c2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5k
QWN0aXZhdGUoY29kZUJsb2NrKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBD
b2RlRm9yQ29uc3RydWN0OgotICAgICAgICAgICAgb2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZUFuZFVud3JhcChleGVjdXRhYmxlLT5tX2NvZGVCbG9j
a0ZvckNvbnN0cnVjdC5nZXQoKSk7Ci0gICAgICAgICAgICBleGVjdXRhYmxlLT5tX2NvZGVCbG9j
a0ZvckNvbnN0cnVjdC5zZXRNYXlCZU51bGwodm0sIHRoaXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2U6OndyYXBBbmRBY3RpdmF0ZShjb2RlQmxvY2spKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9CisgICAgICAgIG9sZENvZGVCbG9jayA9IGV4ZWN1dGFibGUtPnJlcGxhY2VDb2Rl
QmxvY2tXaXRoKHZtLCBraW5kLCBjb2RlQmxvY2spOwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgfQpAQCAtMTg3LDcgKzE3Niw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENv
ZGUoVk0mIHZtLCBDb2RlQmxvY2sqIGdlbmVyaWNDb2RlQmxvY2ssIENvZGVUeXBlCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIGF1dG8mIGNsZWFyYWJsZUNvZGVTZXQgPSBIZWFwOjpTcGFj
ZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgpKTsKKyAgICBhdXRvJiBjbGVhcmFibGVDb2RlU2V0
ID0gSGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0OjpjbGVhcmFibGVDb2RlU2V0Rm9y
KCpzdWJzcGFjZSgpKTsKICAgICBpZiAoaGFzQ2xlYXJhYmxlQ29kZSh2bSkpCiAgICAgICAgIGNs
ZWFyYWJsZUNvZGVTZXQuYWRkKHRoaXMpOwogICAgIGVsc2UKQEAgLTIyNSwyMyArMjE0LDIzIEBA
IGJvb2wgU2NyaXB0RXhlY3V0YWJsZTo6aGFzQ2xlYXJhYmxlQ29kZShWTSYgdm0pIGNvbnN0CiAK
ICAgICBpZiAoc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxl
OjppbmZvKCkpIHsKICAgICAgICAgYXV0byogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0
IEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9j
b2RlQmxvY2tGb3JDYWxsIHx8IGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0KQor
ICAgICAgICBpZiAoZXhlY3V0YWJsZS0+ZWl0aGVyQ29kZUJsb2NrKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIH0gZWxzZSBpZiAoc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCkg
PT0gRXZhbEV4ZWN1dGFibGU6OmluZm8oKSkgewogICAgICAgICBhdXRvKiBleGVjdXRhYmxlID0g
c3RhdGljX2Nhc3Q8Y29uc3QgRXZhbEV4ZWN1dGFibGUqPih0aGlzKTsKLSAgICAgICAgaWYgKGV4
ZWN1dGFibGUtPm1fZXZhbENvZGVCbG9jayB8fCBleGVjdXRhYmxlLT5tX3VubGlua2VkRXZhbENv
ZGVCbG9jaykKKyAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrIHx8IGV4ZWN1dGFi
bGUtPm1fdW5saW5rZWRDb2RlQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IH0gZWxzZSBpZiAoc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCkgPT0gUHJvZ3JhbUV4ZWN1dGFi
bGU6OmluZm8oKSkgewogICAgICAgICBhdXRvKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKLSAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1f
cHJvZ3JhbUNvZGVCbG9jayB8fCBleGVjdXRhYmxlLT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9j
aykKKyAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrIHx8IGV4ZWN1dGFibGUtPm1f
dW5saW5rZWRDb2RlQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIH0gZWxz
ZSBpZiAoc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCkgPT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGU6OmluZm8oKSkgewogICAgICAgICBhdXRvKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKLSAgICAgICAgaWYgKGV4ZWN1dGFi
bGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jawotICAgICAgICAgICAgfHwgZXhlY3V0YWJsZS0+
bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sKKyAgICAgICAgaWYgKGV4ZWN1dGFibGUt
Pm1fY29kZUJsb2NrCisgICAgICAgICAgICB8fCBleGVjdXRhYmxlLT5tX3VubGlua2VkQ29kZUJs
b2NrCiAgICAgICAgICAgICB8fCBleGVjdXRhYmxlLT5tX21vZHVsZUVudmlyb25tZW50U3ltYm9s
VGFibGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNjEsMjUgKzI1MCwy
NSBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcihDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTRnVuYwogICAgIGlmIChjbGFzc0luZm8odm0pID09IEV2
YWxFeGVjdXRhYmxlOjppbmZvKCkpIHsKICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPih0aGlzKTsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjdXRh
YmxlLT5tX2V2YWxDb2RlQmxvY2spOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghZXhlY3V0YWJs
ZS0+bV9jb2RlQmxvY2spOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCghZnVuY3Rpb24pOwotICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgRXZhbENvZGVCbG9jazo6Y3JlYXRl
KHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkRXZhbENvZGVCbG9jay5nZXQo
KSwgc2NvcGUpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEV2YWxD
b2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+dW5saW5rZWRDb2Rl
QmxvY2soKSwgc2NvcGUpKTsKICAgICB9CiAKICAgICBpZiAoY2xhc3NJbmZvKHZtKSA9PSBQcm9n
cmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CiAgICAgICAgIFByb2dyYW1FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
ZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IWV4ZWN1dGFibGUtPm1fY29kZUJsb2NrKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0
aW9uKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIFByb2dyYW1Db2Rl
QmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZFByb2dy
YW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGV4ZWN1
dGFibGUtPnVubGlua2VkQ29kZUJsb2NrKCksIHNjb3BlKSk7CiAgICAgfQogCiAgICAgaWYgKGNs
YXNzSW5mbyh2bSkgPT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgewogICAgICAg
ICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSo+KHRoaXMpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5kID09IENv
ZGVGb3JDYWxsKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWN1dGFibGUtPm1fbW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjdXRhYmxlLT5t
X2NvZGVCbG9jayk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFmdW5jdGlvbik7Ci0gICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpj
cmVhdGUodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmdldCgpLCBzY29wZSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBl
eGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9jaygpLCBzY29wZSkpOwogICAgIH0KIAogICAgIFJF
TEVBU0VfQVNTRVJUKGNsYXNzSW5mbyh2bSkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkp
OwpAQCAtNTM1LDQgKzUyNCw4MiBAQCB1bnNpZ25lZCBTY3JpcHRFeGVjdXRhYmxlOjplbmRDb2x1
bW4oKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9y
Pgordm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYgbG9ja2VyLCBWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykK
K3sKKyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICBjb2RlQmxvY2stPnByb3BhZ2F0ZVRyYW5z
aXRpb25zKGxvY2tlciwgdmlzaXRvcik7CisgICAgY29kZUJsb2NrLT5kZXRlcm1pbmVMaXZlbmVz
cyhsb2NrZXIsIHZpc2l0b3IpOworfQorCit0ZW1wbGF0ZSB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6
OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQWJzdHJhY3RTbG90Vmlz
aXRvciYsIENvZGVCbG9jayopOwordGVtcGxhdGUgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpydW5D
b25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiwgQ29kZUJs
b2NrKik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Citib29sIFNjcmlwdEV4ZWN1dGFi
bGU6OnZpc2l0Q29kZUJsb2NrRWRnZShWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaykKK3sKKyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworCisgICAgaWYgKGNvZGVCbG9jay0+c2hvdWxk
VmlzaXRTdHJvbmdseShsb2NrZXIsIHZpc2l0b3IpKQorICAgICAgICB2aXNpdG9yLmFwcGVuZFVu
YmFycmllcmVkKGNvZGVCbG9jayk7CisKKyAgICBib29sIHNob3VsZEZpbmFsaXplID0gIXZpc2l0
b3IuaXNNYXJrZWQoY29kZUJsb2NrKTsKKworICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdK
SVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKSB7CisgICAgICAgIC8vIElmIHdlIGpldHRpc29uIG91
cnNlbHZlcyB3ZSdsbCBpbnN0YWxsIG91ciBhbHRlcm5hdGl2ZSwgc28gbWFrZSBzdXJlIHRoYXQg
aXQKKyAgICAgICAgLy8gc3Vydml2ZXMgR0MgZXZlbiBpZiB3ZSBkb24ndC4KKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoY29kZUJsb2NrLT5tX2FsdGVybmF0aXZlKTsKKyAgICB9CisKKyAgICAvLyBO
T1RFOiBUaGVyZSBhcmUgdHdvIHNpZGVzIHRvIHRoaXMgY29uc3RyYWludCwgd2l0aCBkaWZmZXJl
bnQgcmVxdWlyZW1lbnRzIGZvciBjb3JyZWN0bmVzcy4KKyAgICAvLyBCZWNhdXNlIGV2ZXJ5dGhp
bmcgaXMgdWx0aW1hdGVseSBwcm90ZWN0ZWQgd2l0aCB3ZWFrIHJlZmVyZW5jZXMgYW5kIGpldHRp
c29uaW5nLCBpdCdzCisgICAgLy8gYWx3YXlzICJPSyIgdG8gY2xhaW0gdGhhdCBzb21ldGhpbmcg
aXMgZGVhZCBwcmVtYXR1cmVseSBhbmQgaXQncyAiT0siIHRvIGtlZXAgdGhpbmdzIGFsaXZlLgor
ICAgIC8vIEJ1dCBib3RoIGNob2ljZXMgY291bGQgbGVhZCB0byBiYWQgcGVyZiAtIGVpdGhlciBy
ZWNvbXAgY3ljbGVzIG9yIGxlYWtzLgorICAgIC8vCisgICAgLy8gRGV0ZXJtaW5pbmcgQ29kZUJs
b2NrIGxpdmVuZXNzOiBUaGlzIHBhcnQgaXMgdGhlIG1vc3QgY29uc2VxdWVudGlhbC4gV2Ugd2Fu
dCB0byBrZWVwIHRoZQorICAgIC8vIG91dHB1dCBjb25zdHJhaW50IGFjdGl2ZSBzbyBsb25nIGFz
IHdlIHRoaW5rIHRoYXQgd2UgbWF5IHlldCBwcm92ZSB0aGF0IHRoZSBDb2RlQmxvY2sgaXMKKyAg
ICAvLyBsaXZlIGJ1dCB3ZSBoYXZlbid0IGRvbmUgaXQgeWV0LgorICAgIC8vCisgICAgLy8gTWFy
a2luZyBTdHJ1Y3R1cmVzIGlmIHByb2ZpdGFibGU6IEl0J3MgaW1wb3J0YW50IHRoYXQgd2UgZG8g
YSBwYXNzIG9mIHRoaXMuIExvZ2ljYWxseSwgdGhpcworICAgIC8vIHNlZW1zIGxpa2UgaXQgaXMg
YSBjb25zdHJhaW50IG9mIENvZGVCbG9jay4gQnV0IHdlIGhhdmUgYWx3YXlzIGZpcnN0IHJ1biB0
aGlzIGFzIGEgcmVzdWx0CisgICAgLy8gb2YgdGhlIGVkZ2UgYmVpbmcgbWFya2VkIGV2ZW4gYmVm
b3JlIHdlIGRldGVybWluZSB0aGUgbGl2ZW5lc3Mgb2YgdGhlIENvZGVCbG9jay4gVGhpcworICAg
IC8vIGFsbG93cyBhIENvZGVCbG9jayB0byBtYXJrIGl0c2VsZiBieSBmaXJzdCBwcm92aW5nIHRo
YXQgYWxsIG9mIHRoZSBTdHJ1Y3R1cmVzIGl0IHdlYWtseQorICAgIC8vIGRlcGVuZHMgb24gY291
bGQgYmUgc3Ryb25nbHkgbWFya2VkLiAoVGhpcyBwYXJ0IGlzIGFsc28gY2FsbGVkIHByb3BhZ2F0
ZVRyYW5zaXRpb25zLikKKyAgICAvLworICAgIC8vIEFzIGEgd2VpcmQgY2F2ZWF0LCB3ZSBvbmx5
IGZpeHBvaW50IHRoZSBjb25zdHJhaW50cyBzbyBsb25nIGFzIHRoZSBDb2RlQmxvY2sgaXMgbm90
IGxpdmUuCisgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlIG1heSBvdmVybG9vayBzdHJ1Y3R1cmUg
bWFya2luZyBvcHBvcnR1bml0aWVzIGNyZWF0ZWQgYnkgb3RoZXIgbWFya2luZworICAgIC8vIHRo
YXQgaGFwcGVucyBhZnRlciB0aGUgQ29kZUJsb2NrIGlzIG1hcmtlZC4gVGhpcyB3YXMgYW4gYWNj
aWRlbnRhbCBwb2xpY3kgZGVjaXNpb24gZnJvbSBhCisgICAgLy8gbG9uZyB0aW1lIGFnbywgYnV0
IGl0IGlzIHByb2JhYmx5IE9LLCBzaW5jZSBpdCdzIG9ubHkgd29ydGh3aGlsZSB0byBrZWVwIGZp
eHBvaW50aW5nIHRoZQorICAgIC8vIHN0cnVjdHVyZSBtYXJraW5nIGlmIHdlIHN0aWxsIGhhdmUg
dW5tYXJrZWQgc3RydWN0dXJlcyBhZnRlciB0aGUgZmlyc3Qgcm91bmQuIFdlIGFsbW9zdAorICAg
IC8vIG5ldmVyIHdpbGwgYmVjYXVzZSB3ZSB3aWxsIG1hcmstaWYtcHJvZml0YWJsZSBiYXNlZCBv
biB0aGUgb3duaW5nIGdsb2JhbCBvYmplY3QgYmVpbmcKKyAgICAvLyBhbHJlYWR5IG1hcmtlZC4g
V2UgbWFyayBpdCBqdXN0IGluIGNhc2UgdGhhdCBoYWRuJ3QgaGFwcGVuZWQgeWV0LiBBbmQgaWYg
dGhlIENvZGVCbG9jayBpcworICAgIC8vIG5vdCB5ZXQgbWFya2VkIGJlY2F1c2UgaXQgd2Vha2x5
IGRlcGVuZHMgb24gYSBzdHJ1Y3R1cmUgdGhhdCB3ZSBkaWQgbm90IHlldCBtYXJrLCB0aGVuIHdl
CisgICAgLy8gd2lsbCBrZWVwIGZpeHBvaW50aW5nIHVudGlsIHRoZSBlbmQuCisgICAgdmlzaXRv
ci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKKyAgICBydW5D
b25zdHJhaW50KGxvY2tlciwgdmlzaXRvciwgY29kZUJsb2NrKTsKKworICAgIHJldHVybiBzaG91
bGRGaW5hbGl6ZTsKK30KKwordGVtcGxhdGUgYm9vbCBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENv
ZGVCbG9ja0VkZ2UoQWJzdHJhY3RTbG90VmlzaXRvciYsIENvZGVCbG9jayopOwordGVtcGxhdGUg
Ym9vbCBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENvZGVCbG9ja0VkZ2UoU2xvdFZpc2l0b3ImLCBD
b2RlQmxvY2sqKTsKKwordm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpmaW5hbGl6ZUNvZGVCbG9ja0Vk
Z2UoVk0mIHZtLCBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiYgY29kZUJsb2NrRWRnZSkKK3sKKyAg
ICBhdXRvKiBjb2RlQmxvY2sgPSBjb2RlQmxvY2tFZGdlLmdldCgpOworICAgIGlmICghY29kZUJs
b2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQoY29kZUJs
b2NrKSkgeworICAgICAgICBpZiAoY29kZUJsb2NrLT5zaG91bGRKZXR0aXNvbkR1ZVRvV2Vha1Jl
ZmVyZW5jZSh2bSkpCisgICAgICAgICAgICBjb2RlQmxvY2stPmpldHRpc29uKFByb2ZpbGVyOjpK
ZXR0aXNvbkR1ZVRvV2Vha1JlZmVyZW5jZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNv
ZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9PbGRBZ2UpOworICAgICAg
ICBpZiAoY29kZUJsb2NrID09IGNvZGVCbG9ja0VkZ2UuZ2V0KCkpCisgICAgICAgICAgICBjb2Rl
QmxvY2tFZGdlLmNsZWFyKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAppbmRleCA3
NWRhZWU0YjhmMjhiNWJjMTBlMGU2MWMyMzY5MGU2NDkyMDc1MTgzLi43ZjM5ZGIyY2I2MzE3OGY2
ZTM4Zjg2YzcyMzYxMTk0MTQ1ZTRiZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCkBAIC0xMzksNiArMTM5LDEyIEBAIGNsYXNzIFNj
cmlwdEV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogCiAgICAgc3RhdGljIFRl
bXBsYXRlT2JqZWN0TWFwJiBlbnN1cmVUZW1wbGF0ZU9iamVjdE1hcEltcGwoc3RkOjp1bmlxdWVf
cHRyPFRlbXBsYXRlT2JqZWN0TWFwPiYgZGVzdCk7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBW
aXNpdG9yPgorICAgIHN0YXRpYyB2b2lkIHJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgVmlzaXRvciYsIENvZGVCbG9jayopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZp
c2l0b3I+CisgICAgc3RhdGljIGJvb2wgdmlzaXRDb2RlQmxvY2tFZGdlKFZpc2l0b3ImLCBDb2Rl
QmxvY2sqKTsKKyAgICB2b2lkIGZpbmFsaXplQ29kZUJsb2NrRWRnZShWTSYsIFdyaXRlQmFycmll
cjxDb2RlQmxvY2s+Jik7CisKICAgICBTb3VyY2VDb2RlIG1fc291cmNlOwogICAgIEludHJpbnNp
YyBtX2ludHJpbnNpYyB7IE5vSW50cmluc2ljIH07CiAgICAgYm9vbCBtX2RpZFRyeVRvRW50ZXJJ
bkxvb3AgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGUz
MmRjYjBhZDM0YjIzYmNkYTI0NzFhMDNlZTkyY2I1MjMzMzgyMzguLjNiYjQ1OGVlOGUzNmQ2YjRl
MjY1ZmRiOWMxOTNhMmVkZDIyZGUwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCiAjaW5jbHVk
ZSAiRXZhbENvZGVCbG9jay5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNs
dWRlICJGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2Nr
LmgiCkBAIC0yOTgsNyArMjk3LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhl
YXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAgICAgaGFzaE1h
cEJ1Y2tldFNldFN0cnVjdHVyZS5zZXQoKnRoaXMsIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tl
dERhdGFLZXk+OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CiAg
ICAgaGFzaE1hcEJ1Y2tldE1hcFN0cnVjdHVyZS5zZXQoKnRoaXMsIEhhc2hNYXBCdWNrZXQ8SGFz
aE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT46OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwg
anNOdWxsKCkpKTsKICAgICBiaWdJbnRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0JpZ0ludDo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwotICAgIGV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CiAKICAgICAv
LyBFYWdlcmx5IGluaXRpYWxpemUgY29uc3RhbnQgY2VsbHMgc2luY2UgdGhlIGNvbmN1cnJlbnQg
Y29tcGlsZXIgY2FuIGFjY2VzcyB0aGVtLgogICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMWU5ZTBiNDhjMzIyMDYyZmVlODk2NTM1
ZjUxMTVhNTYzY2E0NTM5NS4uNjY1NjhmMjlmZTBiZmUzZjAzZTgwOGZjMTI0ZmJkODUyY2JjNWRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zNzMsOSArMzczLDYgQEAgY2xh
c3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlu
a2VkTGlzdE5vZGU8Vk0+IHsKIAogICAgIEZPUl9FQUNIX0pTQ19EWU5BTUlDX0lTT19TVUJTUEFD
RShERUZJTkVfRFlOQU1JQ19JU09fU1VCU1BBQ0VfQUNDRVNTT1JfSU1QTCkKIAotICAgIEFMV0FZ
U19JTkxJTkUgSXNvQ2VsbFNldCYgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3Ry
YWludHMoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0
cmFpbnRzOyB9Ci0gICAgQUxXQVlTX0lOTElORSBJc29DZWxsU2V0JiBleGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkgeyByZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOyB9Ci0KICAgICBBTFdBWVNfSU5MSU5FIEdDQ2xpZW50
OjpJc29TdWJzcGFjZSYgY29kZUJsb2NrU3BhY2UoKSB7IHJldHVybiBjbGllbnRIZWFwLmNvZGVC
bG9ja1NwYWNlOyB9CiAKICAgICBERUZJTkVfRFlOQU1JQ19JU09fU1VCU1BBQ0VfQUNDRVNTT1Io
ZXZhbEV4ZWN1dGFibGVTcGFjZSkKQEAgLTQ0MSw3ICs0MzgsNiBAQCBjbGFzcyBWTSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxW
TT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGhhc2hNYXBCdWNrZXRTZXRTdHJ1Y3R1cmU7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gaGFzaE1hcEJ1Y2tldE1hcFN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBiaWdJbnRTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZVN0cnVjdHVyZTsKIAogICAgIFN0cm9uZzxKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3I+IG1fZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456200</attachid>
            <date>2022-03-30 21:22:57 -0700</date>
            <delta_ts>2022-03-31 00:05:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238485-20220330212257.patch</filename>
            <type>text/plain</type>
            <size>83651</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDE3MTc2YmU2MThhZGY2NWU5ZTE1MGIxYjhkNTdjYzEyZmU3MzFkLi44ODQyODJjYmRjMWQ4ODM0
MWVlYjI4MjA3ZjI5MzM3YTE4MDFhMGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTQgQEAKKzIwMjItMDMtMzAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDg1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgdHVybmVkIG91
dCB0aGF0IGdldHRpbmcgQ29kZUJsb2NrIGZyb20gSlNGdW5jdGlvbiBpcyBjcml0aWNhbC4gQXMg
d2Ugc3RhcnQgdXNpbmcgdW5saW5rZWQgQmFzZWxpbmUsIHdlIGFyZSBsb2FkaW5nCisgICAgICAg
IENvZGVCbG9jayBmcm9tIEpTRnVuY3Rpb24gaW5zdGVhZCBvZiBlbWJlZGRpbmcgaXQsIGFuZCBp
dCByb3VnaGx5IGNvbnRyaWJ1dGVzIHRvIDAuNSUgcmVncmVzc2lvbiBpbiBTcGVlZG9tZXRlcjIu
CisgICAgICAgIEl0IGlzIGFsc28gY3J1Y2lhbCB0byBzb21lIG90aGVyIHBsYWNlczogYm91bmQg
ZnVuY3Rpb24gdGh1bmssIHJlbW90ZSBmdW5jdGlvbiB0aHVuaywgYW5kIHZpcnR1YWwgZnVuY3Rp
b24gY2FsbHMuCisgICAgICAgIFdoaWxlIHRoZSBzdWJzZXF1ZW50IHBhdGNoIHdpbGwgZW1iZWQg
Q29kZUJsb2NrIGludG8gQ2FsbExpbmtJbmZvIHRvIG1ha2UgaXQgZmFzdCwgd2UgYWxzbyB3b3Vs
ZCBsaWtlIHRvIGtlZXAgbG9hZGluZworICAgICAgICBDb2RlQmxvY2sgZnJvbSBKU0Z1bmN0aW9u
IGZhc3RlciBzaW5jZSB0aGlzIGlzIHN0aWxsIHVzZWQgaW4gYm91bmQgZnVuY3Rpb24gdGh1bmsg
ZXRjLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIHJlbW92ZSBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlIHRvIHJlbW92ZSBvbmUtbGV2ZWwgaW5kaXJlY3Rpb24gYmV0d2VlbiBFeGVjdXRh
YmxlIHRvIENvZGVCbG9jay4KKyAgICAgICAgV2UgY2FuIGRlbGVnYXRlIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UncyBqb2IgdG8gZXhpc3RpbmcgRXhlY3V0YWJsZXMgc28gdGhhdCB3ZSBjYW4g
a2VlcCB0aGUgY3VycmVudCB3ZWFrLWVkZ2UKKyAgICAgICAgZmVhdHVyZSB3aXRob3V0IGludHJv
ZHVjaW5nIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuIEl0IGFsc28gcmVtb3ZlcyBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlIGFsbG9jYXRpb25zIGFuZAorICAgICAgICBzaHJpbmtzIHNpemVv
ZihDb2RlQmxvY2spIGJ5IDggYnl0ZS4KKworICAgICAgICBXZSBtb3ZlIGtleSBmdW5jdGlvbnMg
ZnJvbSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlIHRvIFNjcmlwdEV4ZWN1dGFibGUsIGFuZCB3
ZSBtYWludGFpbiBFeGVjdXRhYmxlLXRvLUNvZGVCbG9jayBlZGdlCisgICAgICAgIGluIEV4ZWN1
dGFibGUgc2lkZS4KKworICAgICAgICBMb2NhbCB0ZXN0aW5nIHNob3dlZCB0aGF0IDAuMyUgcHJv
Z3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZl
cmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbkNvbW1vbik6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6b3duZXJFZGdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmg6IFJlbW92ZWQuCisgICAgICAgICogaGVh
cC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChKU0M6Okhl
YXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAoSlNDOjpIZWFw
OjpkZWxldGVBbGxDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkQ29yZUNvbnN0
cmFpbnRzKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6U2Ny
aXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0OjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6OnNldEFuZFNw
YWNlRm9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0
OjpjbGVhcmFibGVDb2RlU2V0Rm9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6U2NyaXB0RXhlY3V0
YWJsZVNwYWNlQW5kU2V0OjpvdXRwdXRDb25zdHJhaW50c1NldEZvcik6CisgICAgICAgIChKU0M6
OkhlYXA6OlNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6ZmluYWxpemVyU2V0Rm9yKToKKyAg
ICAgICAgKiBoZWFwL0lzb0NlbGxTZXQuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvRGly
ZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBy
dW50aW1lL0V2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpj
b2RlQmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6dW5saW5rZWRD
b2RlQmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6bnVtVmFyaWFi
bGVzKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om51bUZ1bmN0aW9uSG9pc3RpbmdD
YW5kaWRhdGVzKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om51bVRvcExldmVsRnVu
Y3Rpb25EZWNscyk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjphbGxvd0RpcmVjdEV2
YWxDYWNoZSBjb25zdCk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb2RlQmxvY2sp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6Cisg
ICAgICAgIChKU0M6OnNob3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbCk6CisgICAgICAgICog
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZTo6cmVwbGFjZUNvZGVCbG9ja1dpdGgpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpHbG9iYWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAg
ICAgIChKU0M6Okdsb2JhbEV4ZWN1dGFibGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHNJbXBsKToK
KyAgICAgICAgKEpTQzo6R2xvYmFsRXhlY3V0YWJsZTo6cmVwbGFjZUNvZGVCbG9ja1dpdGgpOgor
ICAgICAgICAoSlNDOjpHbG9iYWxFeGVjdXRhYmxlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6
CisgICAgICAgICogcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6Okds
b2JhbEV4ZWN1dGFibGU6OmNvZGVCbG9jayBjb25zdCk6CisgICAgICAgIChKU0M6Okdsb2JhbEV4
ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50
aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbklt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3Jh
bUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6Y2xlYXJDb2RlKToKKyAgICAg
ICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUpOgorICAgICAgICAoSlNDOjpT
Y3JpcHRFeGVjdXRhYmxlOjpoYXNDbGVhcmFibGVDb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6U2NyaXB0
RXhlY3V0YWJsZTo6cnVuQ29uc3RyYWludCk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6OnZpc2l0Q29kZUJsb2NrRWRnZSk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6
OmZpbmFsaXplQ29kZUJsb2NrRWRnZSk6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6
CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6ZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpW
TTo6ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk6IERlbGV0ZWQuCisK
IDIwMjItMDMtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBP
cHRpbWl6ZSB0aGUgY29uc3RydWN0aW9uIG9mIGEgSlNDOjpJZGVudGlmaWVyIGZyb20gYW4gQVND
SUlMaXRlcmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDE4YWZlZDcx
NjI5Y2UwNzE2MzZkOWZmYTRjZGU3YWJmY2E5NGFmZC4uYzM2NTkzNzY2ZGQ2MmM5OTQxZDM5MDQz
NGU1YTcyZGJlYzA2NzVlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
NjI3LDcgKzYyNyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCiAgICAgYnl0ZWNvZGUvRGlyZWN0RXZhbENv
ZGVDYWNoZS5oCiAgICAgYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAotICAgIGJ5dGVjb2RlL0V4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIu
aAogICAgIGJ5dGVjb2RlL0V4aXRLaW5kLmgKICAgICBieXRlY29kZS9FeGl0aW5nSW5saW5lS2lu
ZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyOTYxOTdjYWY5YTE2ZDFjMzk1
MTI4OTA0NmI0Njc5MTk2ZjBjZTguLjBhMzBmNjEwNmU4NDA1OGMzNTQ3Yjk4NzM3YzhmMmJmZTEx
ZjllMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzAsNyArMzcwLDYgQEAK
IAkJMEY1RTBGRDgyMDdDNzI3MzAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9i
YmVyU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNUUwRkQ2MjA3QzcyNzEwMDk3RjBERSAvKiBERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJl
clN0YXRlLmggKi87IH07CiAJCTBGNUUwRkU3MjA4NkFENDgwMDk3RjBERSAvKiBJc29TdWJzcGFj
ZVBlclZNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUVGOTFGMTY4NzhGN0Qw
MDNFNUMyNSAvKiBKSVRUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNUVGOTFDMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjYwRkU5MDFG
RkMzNzAyMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MEZFOEUxRkZDMzZGRDAwMDMz
MjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIgLyog
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252
ZW50aW9uLmggKi87IH07CiAJCTBGNjE4MzJEMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1
ZmZsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMjQxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVtaXRTaHVmZmxlLmggKi87IH07CiAJCTBGNjE4
MzJGMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJMb3dlckFmdGVyUmVnQWxsb2MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzI2MUM0NUJGMDcwMDcy
NDUwQiAvKiBBaXJMb3dlckFmdGVyUmVnQWxsb2MuaCAqLzsgfTsKQEAgLTI4OTcsOCArMjg5Niw2
IEBACiAJCTBGNUUwRkU2MjA4NkFENDcwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElzb1N1YnNwYWNlUGVyVk0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFRjkxQjE2ODc4Rjc4MDAzRTVDMjUg
LyogSklUVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJ
VFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUVGOTFDMTY4NzhG
NzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSklUVGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNjBGRThEMUZG
QzM2RkMwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjYwRkU4RTFGRkMzNkZEMDAwMzMyMEEg
LyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQ0NhbGxpbmdD
b252ZW50aW9uLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyog
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEFpckNDYWxsaW5nQ29udmVudGlvbi5oOyBwYXRoID0gYjMvYWlyL0FpckNDYWxsaW5nQ29udmVu
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYxODMyMjFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEFpckN1c3RvbS5jcHA7IHBhdGggPSBiMy9haXIvQWlyQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5NzcsOCArODk3NCw2IEBACiAJCQkJMTRBRDkxMTIxRENB
OTdGRDAwMTRGOUZFIC8qIEV2YWxDb2RlQmxvY2suY3BwICovLAogCQkJCTE0QUQ5MTA2MURDQTky
OTQwMDE0RjlGRSAvKiBFdmFsQ29kZUJsb2NrLmggKi8sCiAJCQkJMTQxNDJFNTIxQjc5NkVERDAw
RjRCRjRCIC8qIEV4ZWN1dGFibGVJbmZvLmggKi8sCi0JCQkJMEY2MEZFOEQxRkZDMzZGQzAwMDMz
MjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwICovLAotCQkJCTBGNjBGRThFMUZG
QzM2RkQwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggKi8sCiAJCQkJMEY1
NkExRDQxNTAwMUNGMjAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuY3BwICovLAogCQkJCTBG
NTZBMUQxMTUwMDBGMzEwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggKi8sCiAJCQkJMEY0
NEE3QTkyMEJGNjg1RTAwMjJCMTcxIC8qIEV4aXRGbGFnLmNwcCAqLywKQEAgLTEwMjczLDcgKzEw
MjY4LDYgQEAKIAkJCQlFMzVBMEI5RDIyMEFEODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJhc2VJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDE0MkU1MzFCNzk2RUREMDBGNEJGNEIgLyog
RXhlY3V0YWJsZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTE5M0Y3MjY2QzQzMkQwMDQ4
M0EyQyAvKiBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjYw
RkU5MDFGRkMzNzAyMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY1NkExRDMxNTAwMEYzNTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDRBN0IwMjBCRjY4NjIwMDIyQjE3MSAvKiBFeGl0
RmxhZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NEE3QjEyMEJGNjhDOTAwMjJCMTcxIC8qIEV4
aXRpbmdJbmxpbmVLaW5kLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dAppbmRleCA4NGE5NjI0MWRiMWQ4M2JiY2RhZDNjMTllY2EzZTUzOWM2ZmI3YmY3Li4wNTA2OWM1
NDg5MjQ4YTdkMDJjNTc2ZDAwYjkzMTIxNmE0MDNlYTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CkBAIC0yMjksNyArMjI5LDYgQEAgYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCiBi
eXRlY29kZS9EZWxldGVCeVZhcmlhbnQuY3BwCiBieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hl
LmNwcAogYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5jcHAKLWJ5dGVjb2RlL0V4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UuY3BwCiBieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcAogYnl0ZWNvZGUv
RXhpdEZsYWcuY3BwCiBieXRlY29kZS9FeGl0S2luZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNmQ5ZDhiNTFlMTE5ZGJjMDc4MDkxMTRl
MWNiMTBlZGI2NzI4NDU3OC4uNmIwMjkxNTBiNTEyYmMzOTVhMzE5MDI4ZTJlYzVhN2Q4ZWY4YTg4
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTMxMSw3ICszMTEsNiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jawogdm9pZCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90
aGVyKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmaW5pc2hDcmVhdGlv
bkNvbW1vbih2bSk7CiAKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CiAKQEAgLTM2Nyw3ICsz
NjYsNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIEpTU2NvcGUqIHNjb3BlKQogewog
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmaW5pc2hDcmVhdGlvbkNvbW1vbih2
bSk7CiAKICAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOwogCkBAIC03NjYsMTEgKzc2
NCw2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1
dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbkNvbW1vbihWTSYgdm0pCi17Ci0gICAgbV9vd25l
ckVkZ2Uuc2V0KHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpjcmVhdGUodm0s
IHRoaXMpKTsKLX0KLQogI2lmIEVOQUJMRShKSVQpCiB2b2lkIENvZGVCbG9jazo6c2V0dXBXaXRo
VW5saW5rZWRCYXNlbGluZUNvZGUoUmVmPEJhc2VsaW5lSklUQ29kZT4gaml0Q29kZSkKIHsKQEAg
LTEwNTEsNyArMTA0NCw2IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuSW1wbChKU0Nl
bGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgQ29kZUJsb2NrKiB0aGlzT2JqZWN0ID0g
anNDYXN0PENvZGVCbG9jayo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0
b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb3duZXJFZGdlKTsKICAgICB0
aGlzT2JqZWN0LT52aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogfQogCkBAIC0xMDc5LDcgKzEwNzEs
NyBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7CiAgICAgc3Ry
b25nbHlWaXNpdFdlYWtSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7CiAgICAgCi0gICAgSGVh
cDo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSkuYWRkKHRoaXMpOworICAgIEhlYXA6
OkNvZGVCbG9ja1NwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkpLmFkZCh0aGlzKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTE2NjcsNyArMTY1OSw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCiAgICAgfTsKICAgICB1
cGRhdGVBY3Rpdml0eSgpOwogCi0gICAgSGVhcDo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3Bh
Y2UoKSkucmVtb3ZlKHRoaXMpOworICAgIEhlYXA6OkNvZGVCbG9ja1NwYWNlQW5kU2V0OjpzZXRG
b3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKIAogICAgIC8vIEluIENvZGVCbG9jazo6c2hv
dWxkVmlzaXRTdHJvbmdseSgpIHdlIG1heSBoYXZlIGRlY2lkZWQgdG8gc2tpcCB2aXNpdGluZyB0
aGlzCiAgICAgLy8gY29kZUJsb2NrLiBCeSB0aGUgdGltZSB3ZSBnZXQgaGVyZSwgd2UncmUgZG9u
ZSB3aXRoIHRoZSB2ZXJpZmllciBHQy4gU28sIGxldCdzCkBAIC0xODM0LDcgKzE4MjYsNyBAQCB2
b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiBsb2NrZXIsCiAgICAgVU5VU0VEX1BBUkFNKGxvY2tlcik7CiAgICAgCiAg
ICAgdmlzaXRvci5hcHBlbmQobV9nbG9iYWxPYmplY3QpOwotICAgIHZpc2l0b3IuYXBwZW5kKG1f
b3duZXJFeGVjdXRhYmxlKTsgLy8gVGhpcyBpcyBleHRyYSBpbXBvcnRhbnQgc2luY2UgaXQgY2F1
c2VzIHRoZSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlIHRvIGJlIG1hcmtlZC4KKyAgICB2aXNp
dG9yLmFwcGVuZChtX293bmVyRXhlY3V0YWJsZSk7IC8vIFRoaXMgaXMgZXh0cmEgaW1wb3J0YW50
IHNpbmNlIGl0IGNhdXNlcyB0aGUgRXhlY3V0YWJsZSAtPiBDb2RlQmxvY2sgZWRnZSBhY3RpdmF0
ZWQuCiAgICAgdmlzaXRvci5hcHBlbmQobV91bmxpbmtlZENvZGUpOwogICAgIGlmIChtX3JhcmVE
YXRhKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2RpcmVjdEV2YWxDb2RlQ2FjaGUudmlzaXRBZ2dy
ZWdhdGUodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKaW5kZXggNDY5NjNkNzNkZTIzZTAxZmQxNTI1NDUxYTgzNDdiNmM3NzVjMTgyNi4uMjdhODMz
NTE4MDAxMzY5ODU0MmU0N2I1NDNjYWIzMmJhM2FjY2YzMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtODcsMTIgKzg3LDEyIEBAIGNsYXNzIFVuYXJ5
QXJpdGhQcm9maWxlOwogY2xhc3MgQmluYXJ5QXJpdGhQcm9maWxlOwogY2xhc3MgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgQ29kZUJsb2NrU2V0OwotY2xhc3MgRXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZTsKIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CiBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQ7CiBjbGFzcyBNZXRhZGF0YVRhYmxlOwogY2xhc3MgUmVnaXN0ZXJBdE9mZnNl
dExpc3Q7CitjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87
CiBjbGFzcyBCYXNlbGluZUpJVENvZGU7CiBjbGFzcyBCYXNlbGluZUpJVERhdGE7CkBAIC0xMzQs
OCArMTM0LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVy
KTsKICAgICBib29sIGZpbmlzaENyZWF0aW9uKFZNJiwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTU2NvcGUqKTsKLSAgICAKLSAgICB2b2lk
IGZpbmlzaENyZWF0aW9uQ29tbW9uKFZNJik7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxP
YmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogCkBAIC0zNjksOCArMzY3LDYgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgCiAgICAgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9vd25lckV4ZWN1dGFibGUuZ2V0KCk7IH0KICAg
ICAKLSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBvd25lckVkZ2UoKSBjb25zdCB7IHJl
dHVybiBtX293bmVyRWRnZS5nZXQoKTsgfQotCiAgICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4g
Km1fdm07IH0KIAogICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzUmVnaXN0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX3VubGlua2VkQ29kZS0+dGhpc1JlZ2lzdGVyKCk7IH0KQEAgLTg0OSw3ICs4NDUsOCBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgQ29kZUJsb2NrU2V0OwotICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOworICAgIGZyaWVuZCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CisgICAgZnJp
ZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNp
dG9yPiBBTFdBWVNfSU5MSU5FIHZvaWQgdmlzaXRDaGlsZHJlbihWaXNpdG9yJik7CiAKQEAgLTky
Myw3ICs5MjAsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFdy
aXRlQmFycmllcjxVbmxpbmtlZENvZGVCbG9jaz4gbV91bmxpbmtlZENvZGU7CiAgICAgV3JpdGVC
YXJyaWVyPFNjcmlwdEV4ZWN1dGFibGU+IG1fb3duZXJFeGVjdXRhYmxlOwotICAgIFdyaXRlQmFy
cmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX293bmVyRWRnZTsKICAgICAvLyBtX3Zt
IG11c3QgYmUgYSBwb2ludGVyIChpbnN0ZWFkIG9mIGEgcmVmZXJlbmNlKSBiZWNhdXNlIHRoZSBK
U0NMTEludE9mZnNldHNFeHRyYWN0b3IKICAgICAvLyBjYW5ub3QgaGFuZGxlIGl0IGJlaW5nIGEg
cmVmZXJlbmNlLgogICAgIFZNKiBtX3ZtOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmRkYjdhNjY1Nzk5YjY3NzY3YjMwNGZlNWYzNTg5NDdh
ZDQ3OTM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDIxMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgotI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNPYmplY3RJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsK
LQotY29uc3QgQ2xhc3NJbmZvIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnNfaW5mbyA9IHsg
IkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UiX3MsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSkgfTsKLQotU3Ry
dWN0dXJlKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLXsKLSAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotfQotCi1FeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpjcmVhdGUoVk0m
IHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKLXsKLSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlPih2bSkpIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Uodm0sIGNvZGVCbG9jayk7
Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Ci17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVCghaXNBY3RpdmUo
KSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2U6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlz
aXRvcikKLXsKLSAgICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7Ci0gICAgRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZSogZWRnZSA9IGpzQ2FzdDxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKj4oY2Vs
bCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjZWxsLCBpbmZvKCkpOwotICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7Ci0KLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGVkZ2UtPm1fY29kZUJsb2NrLmdldCgpOwotCi0gICAgLy8gSXQncyBwb3NzaWJsZSBm
b3Igc29tZW9uZSB0byBob2xkIGEgcG9pbnRlciB0byB0aGUgZWRnZSBhZnRlciB0aGUgZWRnZSBo
YXMgY2xlYXJlZCBpdHMgd2VhawotICAgIC8vIHJlZmVyZW5jZSB0byB0aGUgY29kZUJsb2NrLiBJ
biBhIGNvbnNlcnZhdGl2ZSBHQyBsaWtlIG91cnMsIHRoYXQgY291bGQgaGFwcGVuIGF0IHJhbmRv
bSBmb3IKLSAgICAvLyBubyBnb29kIHJlYXNvbiBhbmQgaXQncyBUb3RhbGx5IE9LIChUTSkuIFNl
ZSBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpIGZvciB3aGVyZSB3ZSBjbGVhcgotICAgIC8vIG1f
Y29kZUJsb2NrLgotICAgIGlmICghY29kZUJsb2NrKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgaWYgKCFlZGdlLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJy
aWVyZWQoY29kZUJsb2NrKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLQotICAgIGlmIChjb2Rl
QmxvY2stPnNob3VsZFZpc2l0U3Ryb25nbHkobG9ja2VyLCB2aXNpdG9yKSkKLSAgICAgICAgdmlz
aXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwotICAgIAotICAgIGlmICghdmlzaXRv
ci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlc1dpdGhGaW5hbGl6ZXJzKCkuYWRkKGVkZ2UpOwotICAgIAotICAgIGlmIChKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKSB7Ci0gICAgICAgIC8vIElmIHdl
IGpldHRpc29uIG91cnNlbHZlcyB3ZSdsbCBpbnN0YWxsIG91ciBhbHRlcm5hdGl2ZSwgc28gbWFr
ZSBzdXJlIHRoYXQgaXQKLSAgICAgICAgLy8gc3Vydml2ZXMgR0MgZXZlbiBpZiB3ZSBkb24ndC4K
LSAgICAgICAgdmlzaXRvci5hcHBlbmQoY29kZUJsb2NrLT5tX2FsdGVybmF0aXZlKTsKLSAgICB9
Ci0gICAgCi0gICAgLy8gTk9URTogVGhlcmUgYXJlIHR3byBzaWRlcyB0byB0aGlzIGNvbnN0cmFp
bnQsIHdpdGggZGlmZmVyZW50IHJlcXVpcmVtZW50cyBmb3IgY29ycmVjdG5lc3MuCi0gICAgLy8g
QmVjYXVzZSBldmVyeXRoaW5nIGlzIHVsdGltYXRlbHkgcHJvdGVjdGVkIHdpdGggd2VhayByZWZl
cmVuY2VzIGFuZCBqZXR0aXNvbmluZywgaXQncwotICAgIC8vIGFsd2F5cyAiT0siIHRvIGNsYWlt
IHRoYXQgc29tZXRoaW5nIGlzIGRlYWQgcHJlbWF0dXJlbHkgYW5kIGl0J3MgIk9LIiB0byBrZWVw
IHRoaW5ncyBhbGl2ZS4KLSAgICAvLyBCdXQgYm90aCBjaG9pY2VzIGNvdWxkIGxlYWQgdG8gYmFk
IHBlcmYgLSBlaXRoZXIgcmVjb21wIGN5Y2xlcyBvciBsZWFrcy4KLSAgICAvLwotICAgIC8vIERl
dGVybWluaW5nIENvZGVCbG9jayBsaXZlbmVzczogVGhpcyBwYXJ0IGlzIHRoZSBtb3N0IGNvbnNl
cXVlbnRpYWwuIFdlIHdhbnQgdG8ga2VlcCB0aGUKLSAgICAvLyBvdXRwdXQgY29uc3RyYWludCBh
Y3RpdmUgc28gbG9uZyBhcyB3ZSB0aGluayB0aGF0IHdlIG1heSB5ZXQgcHJvdmUgdGhhdCB0aGUg
Q29kZUJsb2NrIGlzCi0gICAgLy8gbGl2ZSBidXQgd2UgaGF2ZW4ndCBkb25lIGl0IHlldC4KLSAg
ICAvLwotICAgIC8vIE1hcmtpbmcgU3RydWN0dXJlcyBpZiBwcm9maXRhYmxlOiBJdCdzIGltcG9y
dGFudCB0aGF0IHdlIGRvIGEgcGFzcyBvZiB0aGlzLiBMb2dpY2FsbHksIHRoaXMKLSAgICAvLyBz
ZWVtcyBsaWtlIGl0IGlzIGEgY29uc3RyYWludCBvZiBDb2RlQmxvY2suIEJ1dCB3ZSBoYXZlIGFs
d2F5cyBmaXJzdCBydW4gdGhpcyBhcyBhIHJlc3VsdAotICAgIC8vIG9mIHRoZSBlZGdlIGJlaW5n
IG1hcmtlZCBldmVuIGJlZm9yZSB3ZSBkZXRlcm1pbmUgdGhlIGxpdmVuZXNzIG9mIHRoZSBDb2Rl
QmxvY2suIFRoaXMKLSAgICAvLyBhbGxvd3MgYSBDb2RlQmxvY2sgdG8gbWFyayBpdHNlbGYgYnkg
Zmlyc3QgcHJvdmluZyB0aGF0IGFsbCBvZiB0aGUgU3RydWN0dXJlcyBpdCB3ZWFrbHkKLSAgICAv
LyBkZXBlbmRzIG9uIGNvdWxkIGJlIHN0cm9uZ2x5IG1hcmtlZC4gKFRoaXMgcGFydCBpcyBhbHNv
IGNhbGxlZCBwcm9wYWdhdGVUcmFuc2l0aW9ucy4pCi0gICAgLy8KLSAgICAvLyBBcyBhIHdlaXJk
IGNhdmVhdCwgd2Ugb25seSBmaXhwb2ludCB0aGUgY29uc3RyYWludHMgc28gbG9uZyBhcyB0aGUg
Q29kZUJsb2NrIGlzIG5vdCBsaXZlLgotICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSBtYXkgb3Zl
cmxvb2sgc3RydWN0dXJlIG1hcmtpbmcgb3Bwb3J0dW5pdGllcyBjcmVhdGVkIGJ5IG90aGVyIG1h
cmtpbmcKLSAgICAvLyB0aGF0IGhhcHBlbnMgYWZ0ZXIgdGhlIENvZGVCbG9jayBpcyBtYXJrZWQu
IFRoaXMgd2FzIGFuIGFjY2lkZW50YWwgcG9saWN5IGRlY2lzaW9uIGZyb20gYQotICAgIC8vIGxv
bmcgdGltZSBhZ28sIGJ1dCBpdCBpcyBwcm9iYWJseSBPSywgc2luY2UgaXQncyBvbmx5IHdvcnRo
d2hpbGUgdG8ga2VlcCBmaXhwb2ludGluZyB0aGUKLSAgICAvLyBzdHJ1Y3R1cmUgbWFya2luZyBp
ZiB3ZSBzdGlsbCBoYXZlIHVubWFya2VkIHN0cnVjdHVyZXMgYWZ0ZXIgdGhlIGZpcnN0IHJvdW5k
LiBXZSBhbG1vc3QKLSAgICAvLyBuZXZlciB3aWxsIGJlY2F1c2Ugd2Ugd2lsbCBtYXJrLWlmLXBy
b2ZpdGFibGUgYmFzZWQgb24gdGhlIG93bmluZyBnbG9iYWwgb2JqZWN0IGJlaW5nCi0gICAgLy8g
YWxyZWFkeSBtYXJrZWQuIFdlIG1hcmsgaXQganVzdCBpbiBjYXNlIHRoYXQgaGFkbid0IGhhcHBl
bmVkIHlldC4gQW5kIGlmIHRoZSBDb2RlQmxvY2sgaXMKLSAgICAvLyBub3QgeWV0IG1hcmtlZCBi
ZWNhdXNlIGl0IHdlYWtseSBkZXBlbmRzIG9uIGEgc3RydWN0dXJlIHRoYXQgd2UgZGlkIG5vdCB5
ZXQgbWFyaywgdGhlbiB3ZQotICAgIC8vIHdpbGwga2VlcCBmaXhwb2ludGluZyB1bnRpbCB0aGUg
ZW5kLgotICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMo
KS5hZGQoZWRnZSk7Ci0gICAgZWRnZS0+cnVuQ29uc3RyYWludChsb2NrZXIsIHZtLCB2aXNpdG9y
KTsKLX0KLQotREVGSU5FX1ZJU0lUX0NISUxEUkVOKEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Up
OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3Im
IHZpc2l0b3IpCi17Ci0gICAgVk0mIHZtID0gdmlzaXRvci52bSgpOwotICAgIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2UqIGVkZ2UgPSBqc0Nhc3Q8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSo+
KGNlbGwpOwotICAgIAotICAgIGVkZ2UtPnJ1bkNvbnN0cmFpbnQoTm9Mb2NraW5nTmVjZXNzYXJ5
LCB2bSwgdmlzaXRvcik7Ci19Ci0KLURFRklORV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlOVFMoRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZSk7Ci0KLXZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQotewotICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gbV9jb2RlQmxvY2suZ2V0KCk7Ci0gICAgCi0gICAgaWYgKCF2bS5oZWFwLmlzTWFy
a2VkKGNvZGVCbG9jaykpIHsKLSAgICAgICAgaWYgKGNvZGVCbG9jay0+c2hvdWxkSmV0dGlzb25E
dWVUb1dlYWtSZWZlcmVuY2Uodm0pKQotICAgICAgICAgICAgY29kZUJsb2NrLT5qZXR0aXNvbihQ
cm9maWxlcjo6SmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2UpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBjb2RlQmxvY2stPmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvT2xkQWdl
KTsKLSAgICAgICAgbV9jb2RlQmxvY2suY2xlYXIoKTsKLSAgICB9Ci0gICAgCi0gICAgdm0uZXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpLnJlbW92ZSh0aGlzKTsKLSAg
ICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cygpLnJlbW92ZSh0
aGlzKTsKLX0KLQotaW5saW5lIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6YWN0aXZh
dGUoKQotewotICAgIHNldFBlckNlbGxCaXQodHJ1ZSk7Ci19Ci0KLWlubGluZSB2b2lkIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGUoKQotewotICAgIHNldFBlckNlbGxCaXQo
ZmFsc2UpOwotfQotCi1pbmxpbmUgYm9vbCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjppc0Fj
dGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHBlckNlbGxCaXQoKTsKLX0KLQotQ29kZUJsb2Nr
KiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFjdGl2YXRlQW5kVW53cmFwKEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2UpCi17Ci0gICAgaWYgKCFlZGdlKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBlZGdlLT5kZWFjdGl2YXRlKCk7Ci0gICAgcmV0dXJuIGVkZ2UtPmNv
ZGVCbG9jaygpOwotfQotCi1FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlOjp3cmFwKENvZGVCbG9jayogY29kZUJsb2NrKQotewotICAgIGlmICghY29k
ZUJsb2NrKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY29kZUJsb2NrLT5v
d25lckVkZ2UoKTsKLX0KLSAgICAKLUV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3RpdmF0ZShDb2RlQmxvY2sqIGNvZGVCbG9jaykK
LXsKLSAgICBpZiAoIWNvZGVCbG9jaykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogcmVzdWx0ID0gY29kZUJsb2NrLT5vd25lckVkZ2UoKTsK
LSAgICByZXN1bHQtPmFjdGl2YXRlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZTo6RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZShWTSYgdm0sIENv
ZGVCbG9jayogY29kZUJsb2NrKQotICAgIDogQmFzZSh2bSwgdm0uZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fY29kZUJsb2NrKHZtLCB0aGlzLCBjb2Rl
QmxvY2spCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiBsb2NrZXIsIFZNJiB2bSwgVmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IG1fY29kZUJsb2NrLmdldCgpOwotICAgIAotICAgIGNvZGVCbG9jay0+cHJvcGFn
YXRlVHJhbnNpdGlvbnMobG9ja2VyLCB2aXNpdG9yKTsKLSAgICBjb2RlQmxvY2stPmRldGVybWlu
ZUxpdmVuZXNzKGxvY2tlciwgdmlzaXRvcik7Ci0KLSAgICBpZiAodmlzaXRvci5pc01hcmtlZChj
b2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25z
dHJhaW50cygpLnJlbW92ZSh0aGlzKTsKLX0KLQotdGVtcGxhdGUgdm9pZCBFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZN
JiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwotdGVtcGxhdGUgdm9pZCBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwg
U2xvdFZpc2l0b3ImKTsKLQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYTZmOWI0ZThlMWFhYTJlNzBhM2Qw
MWNmMzlmMjk2NmJjOTM0NjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKLSNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgotI2lu
Y2x1ZGUgIkpTQ2FzdC5oIgotI2luY2x1ZGUgIlZNLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1j
bGFzcyBDb2RlQmxvY2s7Ci1jbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0KLWNsYXNzIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0
YWw7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+Ci0g
ICAgc3RhdGljIEdDQ2xpZW50OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQotICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UoKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQotICAgIHN0YXRpYyBFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlKiBjcmVhdGUoVk0mLCBDb2RlQmxvY2sqKTsKLSAgICAKLSAgICBERUNM
QVJFX0lORk87Ci0KLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLmdldCgpOyB9Ci0KLSAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOwotICAgIERF
Q0xBUkVfVklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTOwotICAgIHZvaWQgZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkoVk0mKTsKLSAgICAKLSAgICBzdGF0aWMgQ29kZUJsb2NrKiB1bndyYXAoRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSkKLSAgICB7Ci0gICAgICAgIGlmICghZWRnZSkKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gZWRnZS0+Y29kZUJsb2Nr
KCk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBDb2RlQmxvY2sqIGRlYWN0aXZhdGVBbmRVbndy
YXAoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSk7Ci0gICAgCi0gICAgc3RhdGljIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIHdyYXAoQ29kZUJsb2NrKiBjb2RlQmxvY2spOwotICAg
IAotICAgIHN0YXRpYyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiB3cmFwQW5kQWN0aXZhdGUo
Q29kZUJsb2NrKiBjb2RlQmxvY2spOwotCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNv
ZGVCbG9jaygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlLCBtX2NvZGVCbG9jayk7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UoVk0m
LCBDb2RlQmxvY2sqKTsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQotICAgIHZv
aWQgYWN0aXZhdGUoKTsKLSAgICB2b2lkIGRlYWN0aXZhdGUoKTsKLSAgICBib29sIGlzQWN0aXZl
KCkgY29uc3Q7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPiB2b2lkIHJ1bkNvbnN0
cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBWaXNpdG9yJik7Ci0KLSAgICBX
cml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA4ZTUzZGRlYWQxZmQ0NTU4
MGY1Zjk0ZDQ4ZWNmYWNlMTdjNzc3MDYxLi43MWI4NzgzYjJiZjZhMjFjNjk2MzYzNzUyNTU2M2I0
MzU4ZDZjNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMzY4LDggKzM2
OCw2IEBAIEhlYXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGRlc3Ry
dWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsICp0aGlzLCBkZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhh
c2g6MHg0ZjVlZDdhOQogICAgIEZPUl9FQUNIX0pTQ19DT01NT05fSVNPX1NVQlNQQUNFKElOSVRf
U0VSVkVSX0lTT19TVUJTUEFDRSkKICAgICBGT1JfRUFDSF9KU0NfU1RSVUNUVVJFX0lTT19TVUJT
UEFDRShJTklUX1NFUlZFUl9TVFJVQ1RVUkVfSVNPX1NVQlNQQUNFKQotICAgICwgZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZVNwYWNlKQotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyhl
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCiAgICAgLCBjb2RlQmxvY2tTcGFjZUFuZFNl
dCBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
Q29kZUJsb2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKICAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlQW5kU2V0IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1OGYzCiAgICAgLCBwcm9n
cmFtRXhlY3V0YWJsZVNwYWNlQW5kU2V0IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDUyN2M3
N2U3CkBAIC02NzQsOSArNjcyLDIyIEBAIHZvaWQgSGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFs
RmluYWxpemVycygpCiB7CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB2bS5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKLSAgICBmaW5hbGl6ZU1h
cmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4oZnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2VBbmRTZXQuc3BhY2UpOworCisgICAgeworICAgICAgICAvLyBXZSBydW4g
dGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29k
ZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9j
ayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCisKKyAgICAgICAgLy8gRnVuY3Rpb25F
eGVjdXRhYmxlIHJlcXVpcmVzIGFsbCBsaXZlIGluc3RhbmNlcyB0byBydW4gZmluYWxpemVycy4g
VGh1cywgd2UgZG8gbm90IHVzZSBmaW5hbGl6ZXIgc2V0LgorICAgICAgICBmaW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4oZnVuY3Rpb25FeGVj
dXRhYmxlU3BhY2VBbmRTZXQuc3BhY2UpOworCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8UHJvZ3JhbUV4ZWN1dGFibGU+KHByb2dyYW1FeGVjdXRhYmxlU3Bh
Y2VBbmRTZXQuZmluYWxpemVyU2V0KTsKKyAgICAgICAgaWYgKG1fZXZhbEV4ZWN1dGFibGVTcGFj
ZSkKKyAgICAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXZh
bEV4ZWN1dGFibGU+KG1fZXZhbEV4ZWN1dGFibGVTcGFjZS0+ZmluYWxpemVyU2V0KTsKKyAgICAg
ICAgaWYgKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAgIGZpbmFs
aXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+
KG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZS0+ZmluYWxpemVyU2V0KTsKKyAgICB9CisK
ICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN5bWJvbFRhYmxlPihz
eW1ib2xUYWJsZVNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25k
aXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVj
dXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkuCisKICAgICBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoCiAgICAgICAgIFsmXSAoYXV0byYgc3Bh
Y2UpIHsKICAgICAgICAgICAgIHRoaXMtPmZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8Q29kZUJsb2NrPihzcGFjZS5zZXQpOwpAQCAtMTAwMyw3ICsxMDE0LDcgQEAgdm9pZCBI
ZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKERlbGV0ZUFsbENvZGVFZmZvcnQgZWZmb3J0KQogICAg
IGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoCiAgICAgICAgIFsmXSAoYXV0byYgc3BhY2VB
bmRTZXQpIHsKICAgICAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2Nv
cGUoKnRoaXMpOwotICAgICAgICAgICAgYXV0byYgc2V0ID0gc3BhY2VBbmRTZXQuc2V0OworICAg
ICAgICAgICAgYXV0byYgc2V0ID0gc3BhY2VBbmRTZXQuY2xlYXJhYmxlQ29kZVNldDsKICAgICAg
ICAgICAgIHNldC5mb3JFYWNoTGl2ZUNlbGwoCiAgICAgICAgICAgICAgICAgWyZdIChIZWFwQ2Vs
bCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKICAgICAgICAgICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGFibGUqPihjZWxs
KTsKQEAgLTI5MTcsNyArMjkyOCwxMiBAQCB2b2lkIEhlYXA6OmFkZENvcmVDb25zdHJhaW50cygp
CiAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBTZXRSb290TWFya1JlYXNvblNjb3Bl
IHJvb3RTY29wZSh2aXNpdG9yLCBSb290TWFya1JlYXNvbjo6RXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXMpOwotICAgICAgICAgICAgICAgIGFkZChoZWFwLT5leGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlc1dpdGhDb25zdHJhaW50cyk7CisgICAgICAgICAgICAgICAgYWRkKGhlYXAtPmZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlQW5kU2V0Lm91dHB1dENvbnN0cmFpbnRzU2V0KTsKKyAgICAgICAgICAg
ICAgICBhZGQoaGVhcC0+cHJvZ3JhbUV4ZWN1dGFibGVTcGFjZUFuZFNldC5vdXRwdXRDb25zdHJh
aW50c1NldCk7CisgICAgICAgICAgICAgICAgaWYgKGhlYXAtPm1fZXZhbEV4ZWN1dGFibGVTcGFj
ZSkKKyAgICAgICAgICAgICAgICAgICAgYWRkKGhlYXAtPm1fZXZhbEV4ZWN1dGFibGVTcGFjZS0+
b3V0cHV0Q29uc3RyYWludHNTZXQpOworICAgICAgICAgICAgICAgIGlmIChoZWFwLT5tX21vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCisgICAgICAgICAgICAgICAgICAgIGFkZChoZWFwLT5t
X21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UtPm91dHB1dENvbnN0cmFpbnRzU2V0KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChoZWFwLT5tX3dlYWtNYXBTcGFjZSkgewogICAg
ICAgICAgICAgICAgIFNldFJvb3RNYXJrUmVhc29uU2NvcGUgcm9vdFNjb3BlKHZpc2l0b3IsIFJv
b3RNYXJrUmVhc29uOjpXZWFrTWFwU3BhY2UpOwpAQCAtMzE2OSwxOCArMzE4NSwxOCBAQCBGT1Jf
RUFDSF9KU0NfRFlOQU1JQ19JU09fU1VCU1BBQ0UoREVGSU5FX0RZTkFNSUNfSVNPX1NVQlNQQUNF
X01FTUJFUl9TTE9XKQogCiAjdW5kZWYgREVGSU5FX0RZTkFNSUNfSVNPX1NVQlNQQUNFX01FTUJF
Ul9TTE9XCiAKLSNkZWZpbmUgREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xP
VyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKKyNkZWZpbmUgREVGSU5FX0RZTkFNSUNfU1BB
Q0VfQU5EX1NFVF9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUsIHNwYWNlVHlw
ZSkgXAogICAgIElzb1N1YnNwYWNlKiBIZWFwOjpuYW1lIyNTbG93KCkgXAogICAgIHsgXAogICAg
ICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAotICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1
ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGhlYXBDZWxsVHlwZSwgdHlw
ZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8c3BhY2VUeXBlPiBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAogICAgICAgICBXVEY6OnN0
b3JlU3RvcmVGZW5jZSgpOyBcCiAgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwK
ICAgICAgICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKICAgICB9CiAKLURFRklORV9EWU5B
TUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NMT1coZXZhbEV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFibGUpIC8vIEhhc2g6MHg5NThlM2U5
ZAotREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY1MDZmYTNjCitERUZJTkVfRFlOQU1JQ19TUEFDRV9B
TkRfU0VUX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIEV2YWxFeGVjdXRhYmxlLCBIZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VB
bmRTZXQpIC8vIEhhc2g6MHg5NThlM2U5ZAorREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9N
RU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSwgSGVhcDo6U2NyaXB0RXhlY3V0
YWJsZVNwYWNlQW5kU2V0KSAvLyBIYXNoOjB4NjUwNmZhM2MKIAogI3VuZGVmIERFRklORV9EWU5B
TUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NMT1cKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CmluZGV4IGFmMGU0YzQ2YTZjZWE3MDZiY2IxYWVlYzQxMmYxOWQ1MWJiNDgxNTIuLmZhZDg1OTk4
ZWE0N2I5MjFkYzQ2YjU5MzMwMjU0MWUyYmZlM2I3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKQEAgLTEyMCw3ICsxMjAsNiBAQCBjbGFzcyBIZWFwOwogICAgIHYoZGF0ZUluc3RhbmNl
U3BhY2UsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRGF0ZUluc3RhbmNlKSBcCiAgICAgdihk
b21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgRE9NQXR0cmli
dXRlR2V0dGVyU2V0dGVyKSBcCiAgICAgdihleGNlcHRpb25TcGFjZSwgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgRXhjZXB0aW9uKSBcCi0gICAgdihleGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpIFwK
ICAgICB2KGZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRnVuY3Rpb24pIFwKICAg
ICB2KGdldHRlclNldHRlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBHZXR0ZXJTZXR0ZXIpIFwK
ICAgICB2KGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlLCBnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnRIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KSBcCkBAIC0xMDI5
LDEwICsxMDI4LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgRk9SX0VBQ0hfSlNDX0RZTkFNSUNfSVNP
X1NVQlNQQUNFKERFRklORV9EWU5BTUlDX0lTT19TVUJTUEFDRV9NRU1CRVIpCiAjdW5kZWYgREVG
SU5FX0RZTkFNSUNfSVNPX1NVQlNQQUNFX01FTUJFUgogICAgIAotICAgIElzb0NlbGxTZXQgZXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7Ci0gICAgSXNvQ2VsbFNldCBl
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOwotCi0jZGVmaW5lIERZTkFN
SUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKKyNkZWZpbmUgRFlOQU1JQ19T
UEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobmFtZSwgdHlwZSkgXAogICAgIHRlbXBsYXRlPFN1
YnNwYWNlQWNjZXNzIG1vZGU+IFwKICAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKICAgICB7IFwK
QEAgLTEwNDMsNyArMTAzOSw3IEBAIGNsYXNzIEhlYXAgewogICAgICAgICByZXR1cm4gbmFtZSMj
U2xvdygpOyBcCiAgICAgfSBcCiAgICAgSXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsgXAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxTcGFjZUFuZFNldD4gbV8jI25hbWU7CisgICAgc3RkOjp1bmlxdWVf
cHRyPHR5cGU+IG1fIyNuYW1lOwogICAgIAogICAgIHN0cnVjdCBTcGFjZUFuZFNldCB7CiAgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwNjcsNyArMTA2Myw4IEBA
IGNsYXNzIEhlYXAgewogICAgICAgICB9CiAgICAgfTsKIAotICAgIFNwYWNlQW5kU2V0IGNvZGVC
bG9ja1NwYWNlQW5kU2V0OworICAgIHVzaW5nIENvZGVCbG9ja1NwYWNlQW5kU2V0ID0gU3BhY2VB
bmRTZXQ7CisgICAgQ29kZUJsb2NrU3BhY2VBbmRTZXQgY29kZUJsb2NrU3BhY2VBbmRTZXQ7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaENvZGVCbG9ja1Nw
YWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCkBAIC0xMDc1LDEwICsxMDcyLDM5IEBAIGNsYXNzIEhlYXAg
ewogICAgICAgICBmdW5jKGNvZGVCbG9ja1NwYWNlQW5kU2V0KTsKICAgICB9CiAKLSAgICBEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNwYWNlKQotICAg
IERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlU3BhY2UpCi0gICAgU3BhY2VBbmRTZXQgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQ7
Ci0gICAgU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZUFuZFNldDsKKyAgICBzdHJ1
Y3QgU2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIElzb1N1YnNwYWNlIHNwYWNlOworICAgICAgICBJ
c29DZWxsU2V0IGNsZWFyYWJsZUNvZGVTZXQ7CisgICAgICAgIElzb0NlbGxTZXQgb3V0cHV0Q29u
c3RyYWludHNTZXQ7CisgICAgICAgIElzb0NlbGxTZXQgZmluYWxpemVyU2V0OworCisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICAgICAgU2NyaXB0RXhlY3V0YWJs
ZVNwYWNlQW5kU2V0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICAgICAgICAgIDogc3Bh
Y2Uoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAgICAgICwg
Y2xlYXJhYmxlQ29kZVNldChzcGFjZSkKKyAgICAgICAgICAgICwgb3V0cHV0Q29uc3RyYWludHNT
ZXQoc3BhY2UpCisgICAgICAgICAgICAsIGZpbmFsaXplclNldChzcGFjZSkKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIFNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldCYg
c2V0QW5kU3BhY2VGb3IoU3Vic3BhY2UmIHNwYWNlKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gKmJpdHdpc2VfY2FzdDxTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQqPigKKyAgICAg
ICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZzcGFjZSkgLQorICAgICAgICAgICAgICAg
IE9CSkVDVF9PRkZTRVRPRihTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQsIHNwYWNlKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgSXNvQ2VsbFNldCYgY2xlYXJhYmxlQ29kZVNldEZv
cihTdWJzcGFjZSYgc3BhY2UpIHsgcmV0dXJuIHNldEFuZFNwYWNlRm9yKHNwYWNlKS5jbGVhcmFi
bGVDb2RlU2V0OyB9CisgICAgICAgIHN0YXRpYyBJc29DZWxsU2V0JiBvdXRwdXRDb25zdHJhaW50
c1NldEZvcihTdWJzcGFjZSYgc3BhY2UpIHsgcmV0dXJuIHNldEFuZFNwYWNlRm9yKHNwYWNlKS5v
dXRwdXRDb25zdHJhaW50c1NldDsgfQorICAgICAgICBzdGF0aWMgSXNvQ2VsbFNldCYgZmluYWxp
emVyU2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkgeyByZXR1cm4gc2V0QW5kU3BhY2VGb3Ioc3BhY2Up
LmZpbmFsaXplclNldDsgfQorICAgIH07CisKKyAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVG
SU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNwYWNlLCBTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRT
ZXQpCisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGVTcGFjZSwgU2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0KQorICAgIFNjcmlw
dEV4ZWN1dGFibGVTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldDsKKyAg
ICBTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZUFuZFNl
dDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoU2NyaXB0
RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCkBAIC0xMDkxLDcgKzExMTcsOCBAQCBj
bGFzcyBIZWFwIHsKICAgICAgICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJsZVNwYWNlQW5kU2V0KTsK
ICAgICB9CiAKLSAgICBTcGFjZUFuZFNldCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
QW5kU2V0OworICAgIHVzaW5nIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQg
PSBTcGFjZUFuZFNldDsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0
IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQ7CiAKICAgICBWZWN0b3I8SXNv
U3Vic3BhY2VQZXJWTSo+IHBlclZNSXNvU3Vic3BhY2VzOwogI3VuZGVmIERZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29DZWxsU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0
LmgKaW5kZXggY2NiODQ1ZWExMWZiZWE4ZTJhZGNlNTY2MWJkZWE4YzIxZTlhMmE5Zi4uOGJkN2U3
ZWE1YTk0MjNlYWVhYWMwZjk0OWMxMGM0YzFmMGJhN2NkMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb0NlbGxTZXQuaApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgPHd0Zi9CaXRt
YXAuaD4KICNpbmNsdWRlIDx3dGYvQ29uY3VycmVudFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9G
YXN0Qml0VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8
d3RmL05vbm1vdmFibGUuaD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CiAj
aW5jbHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KIApAQCAtNDAsNyArNDIsOSBAQCBjbGFzcyBJc29T
dWJzcGFjZTsKIC8vIENyZWF0ZSBhIHNldCBvZiBjZWxscyB0aGF0IGFyZSBpbiBhbiBJc29TdWJz
cGFjZS4gVGhpcyBhbGxvd3MgY29uY3VycmVudCBPKDEpIHNldCBpbnNlcnRpb24gYW5kCiAvLyBy
ZW1vdmFsLiBFYWNoIHN1Y2ggc2V0IHNob3VsZCBiZSB0aG91Z2h0IG9mIGFzIGEgMC44JSBpbmNy
ZWFzZSBpbiBvYmplY3Qgc2l6ZSBmb3Igb2JqZWN0cyBpbiB0aGF0CiAvLyBJc29TdWJzcGFjZSAo
aXQncyBsaWtlIGFkZGluZyAxIGJpdCBldmVyeSAxNiBieXRlcywgb3IgMSBiaXQgZXZlcnkgMTI4
IGJpdHMpLgotY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8
SXNvQ2VsbFNldD4geworY2xhc3MgSXNvQ2VsbFNldCBmaW5hbCA6IHB1YmxpYyBQYWNrZWRSYXdT
ZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElzb0Nl
bGxTZXQpOworICAgIFdURl9NQUtFX05PTk1PVkFCTEUoSXNvQ2VsbFNldCk7CiBwdWJsaWM6CiAg
ICAgSXNvQ2VsbFNldChJc29TdWJzcGFjZSYgc3Vic3BhY2UpOwogICAgIH5Jc29DZWxsU2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZjEyMzU1NzgyMGMzNGY4NzYyYzE4YTk1
MDNmM2E5NmY3YjRjNjQxMi4uZWQ4ZmIwZjUzZTU3YTVhNTAyZjFjYTI3NjA1NDY3MDkwMGU4YmU5
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE1LDggKzIxNSw2IEBAIHZvaWQg
SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCkKICAg
ICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRP
ZkNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpKSwgcmVzdWx0KTsKICAgICBlbHNlCiAgICAgICAgIGxv
YWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxv
Y2tGb3JDYWxsKCkpLCByZXN1bHQpOwotCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6b2Zmc2V0T2ZDb2RlQmxvY2soKSksIHJlc3VsdCk7CiAg
ICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlc3VsdCwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggM2UyYzZkZjYwYTQ3OGNhMTA5
YWFkYThjMzNkNjBjOTk0YjVkM2MwMS4uMWZkYjRhNTdkNTk0YmVlYTZlYmI4MGFhNjk3YmRhZDQz
ZjkwZjg3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQpAQCAtMTQ5Myw3ICsxNDkzLDYgQEAgbWFjcm8gZnVuY3Rpb25Gb3JD
YWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQogICAgIGxvYWRwIChGdW5jdGlvblJh
cmVEYXRhOjptX2V4ZWN1dGFibGUgLSAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFn
KSlbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgogLmlzRXhlY3V0YWJsZToKICAgICBs
b2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rl
cl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgbG9hZHAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6
bV9jb2RlQmxvY2tbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgogZW5kCiAKIG1hY3Jv
IGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQpAQCAt
MTUwNyw3ICsxNTA2LDYgQEAgbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0
ZXIodGFyZ2V0UmVnaXN0ZXIpCiAgICAgbG9hZHAgKEZ1bmN0aW9uUmFyZURhdGE6Om1fZXhlY3V0
YWJsZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKVt0YXJnZXRSZWdpc3Rl
cl0sIHRhcmdldFJlZ2lzdGVyCiAuaXNFeGVjdXRhYmxlOgogICAgIGxvYWRwIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRS
ZWdpc3RlcgotICAgIGxvYWRwIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6Om1fY29kZUJsb2Nr
W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKIGVuZAogCiBtYWNybyBub3RGdW5jdGlv
bkNvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCBjYTAwZmIx
YzZiNmRhNjk3NmZjYjE2ZTE2N2VmNjgyNDE2ZTE3MTYwLi45ZDY4NWE3NTJjNjVmODViNTU4NmRm
OGU1MzAwZDBhY2U2M2Q2YTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC02Myw3ICs2Myw3IEBAIERpcmVj
dEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldCh2bSwgZXhlY3V0YWJsZSwg
dW5saW5rZWRFdmFsQ29kZSk7CisgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jay5z
ZXQodm0sIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUpOwogCiAgICAgcmV0dXJuIGV4ZWN1
dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFs
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0
YWJsZS5jcHAKaW5kZXggZGQ4NDkzMzgyZmY2MTQxMGJiZWVlZGQwYmJlMjc3ZGM1MjA4ZTYyZi4u
Yjg4NDljY2UxMTU3YzZkMWUzNDFlYWVmZGZhMWY0MWI4YzJlZjEwMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcApAQCAtNTYsOCArNTYs
NiBAQCB2b2lkIEV2YWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGws
IFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgRXZhbEV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8RXZhbEV4ZWN1dGFibGUqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkRXZh
bENvZGVCbG9jayk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9ldmFsQ29kZUJs
b2NrKTsKICAgICBpZiAoVGVtcGxhdGVPYmplY3RNYXAqIG1hcCA9IHRoaXNPYmplY3QtPm1fdGVt
cGxhdGVPYmplY3RNYXAuZ2V0KCkpIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRoaXNPYmpl
Y3QtPmNlbGxMb2NrKCkgfTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICptYXApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRleCA2NjMw
NTRmYTU2N2IzZGFmYmYxMDNkMjg1OTczYWNkODE1NGJkMjc2Li5lODVhM2E3YTM1ZmVmY2IzYTY2
MmIwZmYwYzg0ZGQwYWExMjg5OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V2YWxFeGVjdXRhYmxlLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVkZSAiR2xvYmFs
RXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlVubGlua2VkRXZhbENvZGVCbG9jay5oIgogCkBAIC0z
OSw5ICszOCwxNCBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBHbG9iYWxFeGVjdXRh
YmxlIHsKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgCi0gICAgRXZh
bENvZGVCbG9jayogY29kZUJsb2NrKCkKKyAgICBFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxFdmFsQ29kZUJsb2NrKj4o
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dW53cmFwKG1fZXZhbENvZGVCbG9jay5nZXQoKSkp
OworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEV2YWxDb2RlQmxvY2sqPihCYXNlOjpjb2Rl
QmxvY2soKSk7CisgICAgfQorCisgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9jaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFVubGlu
a2VkRXZhbENvZGVCbG9jayo+KEJhc2U6OnVubGlua2VkQ29kZUJsb2NrKCkpOwogICAgIH0KIAog
ICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKQEAgLTYyLDEwICs2NiwxMCBAQCBj
bGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBHbG9iYWxFeGVjdXRhYmxlIHsKIAogICAgIERF
Q0xBUkVfSU5GTzsKIAotICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5s
aW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQotICAgIHVuc2lnbmVkIG51bUZ1
bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxv
Y2stPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7IH0KLSAgICB1bnNpZ25lZCBudW1U
b3BMZXZlbEZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+
bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KLSAgICBib29sIGFsbG93RGlyZWN0RXZhbENhY2hl
KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPmFsbG93RGlyZWN0RXZh
bENhY2hlKCk7IH0KKyAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiB1bmxpbmtl
ZENvZGVCbG9jaygpLT5udW1WYXJpYWJsZXMoKTsgfQorICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9u
SG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2soKS0+bnVtRnVu
Y3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKTsgfQorICAgIHVuc2lnbmVkIG51bVRvcExldmVsRnVu
Y3Rpb25EZWNscygpIHsgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrKCktPm51bWJlck9mRnVuY3Rp
b25EZWNscygpOyB9CisgICAgYm9vbCBhbGxvd0RpcmVjdEV2YWxDYWNoZSgpIGNvbnN0IHsgcmV0
dXJuIHVubGlua2VkQ29kZUJsb2NrKCktPmFsbG93RGlyZWN0RXZhbENhY2hlKCk7IH0KICAgICBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyPihtX25l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsgfQogICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CiAgICAg
VGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFwKFZNJik7CkBAIC04Miw4
ICs4Niw2IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUg
ewogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwogICAgIHVu
c2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogCi0gICAgV3JpdGVCYXJyaWVy
PEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fZXZhbENvZGVCbG9jazsKLSAgICBXcml0ZUJh
cnJpZXI8VW5saW5rZWRFdmFsQ29kZUJsb2NrPiBtX3VubGlua2VkRXZhbENvZGVCbG9jazsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplY3RNYXA+IG1fdGVtcGxhdGVPYmplY3RNYXA7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcAppbmRleCBkODFhYzYwNmY3NGQ4NTJiOGRiZWU5M2RkZDU2NzY1OGJlMDc0
OTk0Li5jN2VlMTQ5MDg3Zjc4ZjhiYzg4MTE4ZGE3YmI0MDkzOTE4YTliNjMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAK
QEAgLTI0LDEwICsyNCwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uT3ZlcnJpZGVzLmgiCisjaW5jbHVkZSAiSXNvQ2Vs
bFNldElubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTU1LDI3ICs1OCwzMyBAQCB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVz
dHJveShKU0NlbGwqIGNlbGwpCiAKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsK
LSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBlZGdlOworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gbnVsbHB0cjsKICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkKLSAgICAgICAg
ZWRnZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC5nZXQoKTsKKyAgICAgICAgY29kZUJsb2NrID0gY29k
ZUJsb2NrRm9yQ2FsbCgpOwogICAgIGVsc2UgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5k
ID09IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tGb3JDb25z
dHJ1Y3QuZ2V0KCk7CisgICAgICAgIGNvZGVCbG9jayA9IGNvZGVCbG9ja0ZvckNvbnN0cnVjdCgp
OwogICAgIH0KLSAgICBpZiAoIWVkZ2UpCisgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+
KGVkZ2UtPmNvZGVCbG9jaygpLT5iYXNlbGluZUFsdGVybmF0aXZlKCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KGNvZGVCbG9jay0+YmFzZWxpbmVBbHRlcm5h
dGl2ZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3N0YXRpYyBpbmxpbmUg
Ym9vbCBzaG91bGRLZWVwSW5Db25zdHJhaW50U2V0KFZpc2l0b3ImIHZpc2l0b3IsIENvZGVCbG9j
ayogY29kZUJsb2NrRm9yQ2FsbCwgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3QpCit7
CisgICAgLy8gSWYgZWl0aGVyIG9mIENvZGVCbG9ja3MgaXMgbm90IG1hcmtlZCB5ZXQsIHdlIHdp
bGwgcnVuIG91dHB1dC1jb25zdHJhaW50cy4KKyAgICByZXR1cm4gKGNvZGVCbG9ja0ZvckNhbGwg
JiYgIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrRm9yQ2FsbCkpIHx8IChjb2RlQmxvY2tGb3JD
b25zdHJ1Y3QgJiYgIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrRm9yQ29uc3RydWN0KSk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CiB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogeworICAg
IFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV90b3BMZXZlbEV4ZWN1dGFibGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
Y29kZUJsb2NrRm9yQ2FsbCk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jb2Rl
QmxvY2tGb3JDb25zdHJ1Y3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5s
aW5rZWRFeGVjdXRhYmxlKTsKICAgICBpZiAoUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpc09iamVj
dC0+bV9yYXJlRGF0YS5nZXQoKSkgewogICAgICAgICB2aXNpdG9yLmFwcGVuZChyYXJlRGF0YS0+
bV9jYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmVJRCk7CkBAIC04NiwxMCArOTUsNDMgQEAgdm9pZCBG
dW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRv
ciYgdmlzaXRvcikKICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChlbnRyeS52YWx1ZSk7
CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBTaW5jZSBGdW5jdGlvbkV4ZWN1dGFibGUncyBm
aW5hbGl6ZXIgYWx3YXlzIG5lZWRzIHRvIGJlIHJ1biwgd2UgZG8gbm90IHRyYWNrIEZ1bmN0aW9u
RXhlY3V0YWJsZSB2aWEgZmluYWxpemVyU2V0LgorICAgIGF1dG8qIGNvZGVCbG9ja0ZvckNhbGwg
PSB0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCk7CisgICAgaWYgKGNvZGVCbG9j
a0ZvckNhbGwpCisgICAgICAgIHZpc2l0Q29kZUJsb2NrRWRnZSh2aXNpdG9yLCBjb2RlQmxvY2tG
b3JDYWxsKTsKKyAgICBhdXRvKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3QgPSB0aGlzT2JqZWN0LT5t
X2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKTsKKyAgICBpZiAoY29kZUJsb2NrRm9yQ29uc3Ry
dWN0KQorICAgICAgICB2aXNpdENvZGVCbG9ja0VkZ2UodmlzaXRvciwgY29kZUJsb2NrRm9yQ29u
c3RydWN0KTsKKworICAgIGlmIChzaG91bGRLZWVwSW5Db25zdHJhaW50U2V0KHZpc2l0b3IsIGNv
ZGVCbG9ja0ZvckNhbGwsIGNvZGVCbG9ja0ZvckNvbnN0cnVjdCkpCisgICAgICAgIHZtLmhlYXAu
ZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQub3V0cHV0Q29uc3RyYWludHNTZXQuYWRkKHRo
aXNPYmplY3QpOwogfQogCiBERUZJTkVfVklTSVRfQ0hJTERSRU4oRnVuY3Rpb25FeGVjdXRhYmxl
KTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxl
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgVk0mIHZtID0gdmlzaXRvci52bSgpOworICAgIGF1dG8qIGV4ZWN1dGFibGUg
PSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgYXV0byogY29kZUJsb2Nr
Rm9yQ2FsbCA9IGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ2FsbC5nZXQoKTsKKyAgICBpZiAo
Y29kZUJsb2NrRm9yQ2FsbCkgeworICAgICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJs
b2NrRm9yQ2FsbCkpCisgICAgICAgICAgICBydW5Db25zdHJhaW50KE5vTG9ja2luZ05lY2Vzc2Fy
eSwgdmlzaXRvciwgY29kZUJsb2NrRm9yQ2FsbCk7CisgICAgfQorICAgIGF1dG8qIGNvZGVCbG9j
a0ZvckNvbnN0cnVjdCA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpOworICAg
IGlmIChjb2RlQmxvY2tGb3JDb25zdHJ1Y3QpIHsKKyAgICAgICAgaWYgKCF2aXNpdG9yLmlzTWFy
a2VkKGNvZGVCbG9ja0ZvckNvbnN0cnVjdCkpCisgICAgICAgICAgICBydW5Db25zdHJhaW50KE5v
TG9ja2luZ05lY2Vzc2FyeSwgdmlzaXRvciwgY29kZUJsb2NrRm9yQ29uc3RydWN0KTsKKyAgICB9
CisKKyAgICBpZiAoIXNob3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQodmlzaXRvciwgY29kZUJsb2Nr
Rm9yQ2FsbCwgY29kZUJsb2NrRm9yQ29uc3RydWN0KSkKKyAgICAgICAgdm0uaGVhcC5mdW5jdGlv
bkV4ZWN1dGFibGVTcGFjZUFuZFNldC5vdXRwdXRDb25zdHJhaW50c1NldC5yZW1vdmUoZXhlY3V0
YWJsZSk7Cit9CisKK0RFRklORV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlOVFMoRnVuY3Rpb25FeGVj
dXRhYmxlKTsKKwogRnVuY3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21H
bG9iYWxDb2RlKAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgCiAgICAgSlNPYmplY3QqJiBl
eGNlcHRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5j
dGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCAwYTkxMmFlNWVm
NzJkMDE1OGViZDVjZWRjZTU2MjRiNjE1MTkyYWJlLi4zN2UwYzVkYjYxYWNhNjQyZTVlZmRmNjg2
MTJmMDIzMWM0NThmZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlNvdXJj
ZUNvZGUuaCIKQEAgLTY5LDM0ICs2OCwzMSBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgLy8gUmV0dXJucyBlaXRoZXIgY2Fs
bCBvciBjb25zdHJ1Y3QgYnl0ZWNvZGUuIFRoaXMgY2FuIGJlIGFwcHJvcHJpYXRlCiAgICAgLy8g
Zm9yIGFuc3dlcmluZyBxdWVzdGlvbnMgdGhhdCB0aGF0IGRvbid0IHZhcnkgYmV0d2VlbiBjYWxs
IGFuZCBjb25zdHJ1Y3QgLS0KICAgICAvLyBmb3IgZXhhbXBsZSwgYXJndW1lbnRzUmVnaXN0ZXIo
KS4KLSAgICBGdW5jdGlvbkNvZGVCbG9jayogZWl0aGVyQ29kZUJsb2NrKCkKKyAgICBGdW5jdGlv
bkNvZGVCbG9jayogZWl0aGVyQ29kZUJsb2NrKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2U7Ci0gICAgICAgIGlmIChtX2NvZGVCbG9ja0ZvckNh
bGwpCi0gICAgICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCk7
Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAoZWRnZSkpOworICAgICAgICBpZiAoYXV0byogcmVz
dWx0ID0gY29kZUJsb2NrRm9yQ2FsbCgpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgcmV0dXJuIGNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpOwogICAgIH0KICAgICAgICAgCiAg
ICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
ICEhbV9jb2RlQmxvY2tGb3JDYWxsOworICAgICAgICByZXR1cm4gISFjb2RlQmxvY2tGb3JDYWxs
KCk7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9ja0ZvckNhbGwoKQor
ICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDYWxsKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpKSk7CisgICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihtX2NvZGVCbG9ja0Zv
ckNhbGwuZ2V0KCkpOwogICAgIH0KIAogICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3Qo
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEhbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7
CisgICAgICAgIHJldHVybiAhIWNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpOwogICAgIH0KIAotICAg
IEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKQorICAgIEZ1bmN0aW9u
Q29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U6OnVud3JhcChtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKSkpOworICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4obV9jb2RlQmxvY2tGb3JD
b25zdHJ1Y3QuZ2V0KCkpOwogICAgIH0KICAgICAgICAgCiAgICAgYm9vbCBpc0dlbmVyYXRlZEZv
cihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0xMjIsNiArMTE4LDggQEAgY2xhc3Mg
RnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAg
ICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgfQogCisgICAgRnVu
Y3Rpb25Db2RlQmxvY2sqIHJlcGxhY2VDb2RlQmxvY2tXaXRoKFZNJiwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCwgQ29kZUJsb2NrKik7CisKICAgICBSZWZQdHI8VHlwZVNldD4gcmV0dXJuU3RhdGVt
ZW50VHlwZVNldCgpIAogICAgIHsKICAgICAgICAgUmFyZURhdGEmIHJhcmVEYXRhID0gZW5zdXJl
UmFyZURhdGEoKTsKQEAgLTE2Miw2ICsxNjAsNyBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgU291cmNlQ29kZSBjbGFzc1Nv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jbGFzc1NvdXJjZSgp
OyB9CiAKICAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOworICAgIERFQ0xBUkVfVklTSVRfT1VU
UFVUX0NPTlNUUkFJTlRTOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCiAgICAg
ewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG8sIFR5cGVJbmZvKEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKQEAgLTMzMSw4ICszMzAsOCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRh
PiBtX3JhcmVEYXRhOwogICAgIFdyaXRlQmFycmllcjxTY3JpcHRFeGVjdXRhYmxlPiBtX3RvcExl
dmVsRXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU+IG1fdW5saW5rZWRFeGVjdXRhYmxlOwotICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlPiBtX2NvZGVCbG9ja0ZvckNhbGw7Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0OworICAgIFdyaXRl
QmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKKyAgICBXcml0ZUJhcnJpZXI8
Q29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKICAgICBJbmZlcnJlZFZhbHVlPEpT
RnVuY3Rpb24+IG1fc2luZ2xldG9uOwogICAgIEJveDxJbmxpbmVXYXRjaHBvaW50U2V0PiBtX3Bv
bHlQcm90b1dhdGNocG9pbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oCmluZGV4IGM5YTBiMTIyNDA0
MzMyOTcxYTE2YzI4YTZkMTVmNTRlZjNmNTBkOGMuLjQ3M2ZmYzMwY2Y5OWI5OTJlNmZiMGZmMzZj
MTA1NmZlMzk3MmQxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgKQEAgLTMzLDkgKzMzLDI1IEBAIG5h
bWVzcGFjZSBKU0MgewogaW5saW5lIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseShWTSYgdm0pCiB7CiAgICAgbV9zaW5nbGV0b24uZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkodm0pOworICAgIGZpbmFsaXplQ29kZUJsb2NrRWRnZSh2bSwgbV9jb2RlQmxvY2tG
b3JDYWxsKTsKKyAgICBmaW5hbGl6ZUNvZGVCbG9ja0VkZ2Uodm0sIG1fY29kZUJsb2NrRm9yQ29u
c3RydWN0KTsKKyAgICB2bS5oZWFwLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0Lm91dHB1
dENvbnN0cmFpbnRzU2V0LnJlbW92ZSh0aGlzKTsKIH0KIAotSlNTdHJpbmcqIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK2lubGluZSBG
dW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpyZXBsYWNlQ29kZUJsb2NrV2l0
aChWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgQ29kZUJsb2NrKiBuZXdDb2Rl
QmxvY2spCit7CisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgRnVuY3Rp
b25Db2RlQmxvY2sqIG9sZENvZGVCbG9jayA9IGNvZGVCbG9ja0ZvckNhbGwoKTsKKyAgICAgICAg
bV9jb2RlQmxvY2tGb3JDYWxsLnNldCh2bSwgdGhpcywgbmV3Q29kZUJsb2NrKTsKKyAgICAgICAg
cmV0dXJuIG9sZENvZGVCbG9jazsKKyAgICB9CisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgRnVuY3Rpb25Db2RlQmxvY2sqIG9sZENvZGVCbG9jayA9IGNvZGVCbG9j
a0ZvckNvbnN0cnVjdCgpOworICAgIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LnNldCh2bSwgdGhp
cywgbmV3Q29kZUJsb2NrKTsKKyAgICByZXR1cm4gb2xkQ29kZUJsb2NrOworfQorCitpbmxpbmUg
SlNTdHJpbmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKIHsKICAgICBSYXJlRGF0YSYgcmFyZURhdGEgPSBlbnN1cmVSYXJlRGF0YSgp
OwogICAgIGlmICghcmFyZURhdGEubV9hc1N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggNzVlODRiMzhmZjcyN2Iz
MmM4ZWIwMDExNmEwYjFkMGFkODQwYmZlZC4uY2E5MzUxZmMwN2IyZDNjOGE4MTEwNDQ3ZWQwYjEz
MmMzMDhiZDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xv
YmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xv
YmFsRXhlY3V0YWJsZS5jcHAKQEAgLTI2LDEwICsyNiw2MSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkdsb2JhbEV4ZWN1dGFibGUuaCIKIAorI2luY2x1ZGUgIklzb0NlbGxTZXRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IAogY29uc3QgQ2xhc3NJbmZvIEdsb2JhbEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkdsb2JhbEV4
ZWN1dGFibGUiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoR2xvYmFsRXhlY3V0YWJsZSkgfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRv
cj4KK3ZvaWQgR2xvYmFsRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxs
LCBWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8R2xv
YmFsRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoZXhl
Y3V0YWJsZSwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGV4ZWN1dGFibGUsIHZp
c2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKGV4ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxv
Y2spOworCisgICAgaWYgKGF1dG8qIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9jaygp
KSB7CisgICAgICAgIC8vIElmIHRoZSBDb2RlQmxvY2tzIGlzIG5vdCBtYXJrZWQgeWV0LCB3ZSB3
aWxsIHJ1biBvdXRwdXQtY29uc3RyYWludHMuCisgICAgICAgIC8vIFdlIG1haW50YWluIHRoZSBp
bnZhcmlhbnQgdGhhdCwgd2hlbmV2ZXIgd2Ugc2VlIHVubWFya2VkIENvZGVCbG9jaywgdGhlbiB3
ZSBtdXN0IHJ1biBmaW5hbGl6ZXIuCisgICAgICAgIC8vIEFuZCB3aGVuZXZlciB3ZSBzZXQgYSBi
aXQgb24gb3V0cHV0Q29uc3RyYWludHNTZXQsIHdlIG11c3QgYWxyZWFkeSBzZXQgYSBiaXQgaW4g
ZmluYWxpemVyU2V0LgorICAgICAgICB2aXNpdENvZGVCbG9ja0VkZ2UodmlzaXRvciwgY29kZUJs
b2NrKTsKKyAgICAgICAgaWYgKCF2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpIHsKKyAgICAg
ICAgICAgIEhlYXA6OlNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6ZmluYWxpemVyU2V0Rm9y
KCpleGVjdXRhYmxlLT5zdWJzcGFjZSgpKS5hZGQoZXhlY3V0YWJsZSk7CisgICAgICAgICAgICBI
ZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6Om91dHB1dENvbnN0cmFpbnRzU2V0Rm9y
KCpleGVjdXRhYmxlLT5zdWJzcGFjZSgpKS5hZGQoZXhlY3V0YWJsZSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK0RFRklORV9WSVNJVF9DSElMRFJFTihHbG9iYWxFeGVjdXRhYmxlKTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgR2xvYmFsRXhlY3V0YWJsZTo6dmlzaXRPdXRw
dXRDb25zdHJhaW50c0ltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IGF1dG8qIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8R2xvYmFsRXhlY3V0YWJsZSo+KGNlbGwpOworICAg
IGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9jaygpKSB7Cisg
ICAgICAgIGlmICghdmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2spKQorICAgICAgICAgICAgcnVu
Q29uc3RyYWludChOb0xvY2tpbmdOZWNlc3NhcnksIHZpc2l0b3IsIGNvZGVCbG9jayk7CisgICAg
ICAgIGlmICh2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCisgICAgICAgICAgICBIZWFwOjpT
Y3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6Om91dHB1dENvbnN0cmFpbnRzU2V0Rm9yKCpleGVj
dXRhYmxlLT5zdWJzcGFjZSgpKS5yZW1vdmUoZXhlY3V0YWJsZSk7CisgICAgfQorfQorCitERUZJ
TkVfVklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTKEdsb2JhbEV4ZWN1dGFibGUpOworCitDb2RlQmxv
Y2sqIEdsb2JhbEV4ZWN1dGFibGU6OnJlcGxhY2VDb2RlQmxvY2tXaXRoKFZNJiB2bSwgQ29kZUJs
b2NrKiBuZXdDb2RlQmxvY2spCit7CisgICAgQ29kZUJsb2NrKiBvbGRDb2RlQmxvY2sgPSBjb2Rl
QmxvY2soKTsKKyAgICBtX2NvZGVCbG9jay5zZXQodm0sIHRoaXMsIG5ld0NvZGVCbG9jayk7Cisg
ICAgcmV0dXJuIG9sZENvZGVCbG9jazsKK30KKwordm9pZCBHbG9iYWxFeGVjdXRhYmxlOjpmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCit7CisgICAgZmluYWxpemVDb2RlQmxvY2tFZGdl
KHZtLCBtX2NvZGVCbG9jayk7CisgICAgSGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0
OjpvdXRwdXRDb25zdHJhaW50c1NldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOworICAg
IEhlYXA6OlNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6ZmluYWxpemVyU2V0Rm9yKCpzdWJz
cGFjZSgpKS5yZW1vdmUodGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5oCmluZGV4IDkyNzRj
OWNkM2Q2ZDIxMmJhOGI2NTZiYTNjODIwMzA1MTU1NjBiNTQuLjNkMWRlOWUwYWNmNTg2YjUxMmMx
ZmNmZTM3ZmJkOWUxYmYxNGM5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HbG9iYWxFeGVjdXRhYmxlLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0YWJsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ4LDEyICs0NywzMiBAQCBj
bGFzcyBHbG9iYWxFeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAg
ICBBU1NFUlQoZW5kQ29sdW1uICE9IFVJTlRfTUFYKTsKICAgICB9CiAKKyAgICBERUNMQVJFX1ZJ
U0lUX0NISUxEUkVOOworICAgIERFQ0xBUkVfVklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTOworCisg
ICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOworCiBwcm90ZWN0ZWQ6CisgICAg
ZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAgICAgR2xvYmFsRXhlY3V0YWJsZShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlLCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIEludHJpbnNpYyBpbnRy
aW5zaWMpCiAgICAgICAgIDogQmFzZShzdHJ1Y3R1cmUsIHZtLCBzb3VyY2VDb2RlLCBpc0luU3Ry
aWN0Q29udGV4dCA/IFN0cmljdE1vZGVMZXhpY2FsRmVhdHVyZSA6IE5vTGV4aWNhbEZlYXR1cmVz
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIGludHJpbnNpYykKICAgICB7CiAgICAg
fQogCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fY29kZUJsb2NrLmdldCgpOworICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiB1
bmxpbmtlZENvZGVCbG9jaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV91bmxpbmtl
ZENvZGVCbG9jay5nZXQoKTsKKyAgICB9CisKKyAgICBDb2RlQmxvY2sqIHJlcGxhY2VDb2RlQmxv
Y2tXaXRoKFZNJiwgQ29kZUJsb2NrKik7CisKKyAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBt
X2NvZGVCbG9jazsKKyAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRDb2RlQmxvY2s+IG1fdW5saW5r
ZWRDb2RlQmxvY2s7CiAgICAgaW50IG1fbGFzdExpbmUgeyAtMSB9OwogICAgIHVuc2lnbmVkIG1f
ZW5kQ29sdW1uIHsgVUlOVF9NQVggfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDViYzU4ODJi
MDAyYzI4NTY2NTM1MjZjNDA0ZGQ5Y2YxNTQ0NTY1YzYuLmU5ZTFkZTM1YTA1YjNiNGMzMzg2Nzdm
NWM1NjgzMTkyMzhmODg5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGlu
bGluZSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGVJbXBsKEpTR2xvYmFsT2JqZWN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldCh2bSwgZXhlY3V0YWJs
ZSwgdW5saW5rZWRFdmFsQ29kZSk7CisgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9j
ay5zZXQodm0sIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUpOwogCiAgICAgcmV0dXJuIGV4
ZWN1dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCmluZGV4IGEzNzZhZjVlZWEwZGU2YjUxNzBjNGZiNDQ3MzczMGQyNTgzMzFjNTIuLmM5Yjcx
NjA3MGJiZmQwYWEwYjRiN2NjNGVlMmFiODc1YmU5ZjU0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVk
ZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oIgog
I2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAppbmRleCBhYjdiZWNkOWM2N2EwOGMyZmUyNThm
N2RiOTEwNTRmMmJhZDc5ZDExLi4wODEwZTFkMmQxNjUzMGQwZDg2MjU0ZDAwYzM0NzVmNmUxYTQ1
OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNv
cmQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFN5bmNocm9ub3VzbmVzcyBKU01vZHVsZVJlY29yZDo6
bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNjcmlwCiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgU3luY2hyb25vdXNuZXNzOjpTeW5jKTsKICAgICBtX21v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlLnNldCh2bSwgdGhpcywgZXhlY3V0YWJsZSk7CiAKLSAgICBy
ZXR1cm4gZXhlY3V0YWJsZS0+dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCktPmlzQXN5
bmMoKSA/IFN5bmNocm9ub3VzbmVzczo6QXN5bmMgOiBTeW5jaHJvbm91c25lc3M6OlN5bmM7Cisg
ICAgcmV0dXJuIGV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXN5bmMoKSA/IFN5
bmNocm9ub3VzbmVzczo6QXN5bmMgOiBTeW5jaHJvbm91c25lc3M6OlN5bmM7CiB9CiAKIHZvaWQg
SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgSlNN
b2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE1vZHVsCiAgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDE2LWEtaXYu
CiAgICAgLy8gSW5pdGlhbGl6ZSBoZWFwIGFsbG9jYXRlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMu
CiAgICAgLy8gVGhleSBjYW4gYmUgY2FsbGVkIGJlZm9yZSB0aGUgYm9keSBvZiB0aGUgbW9kdWxl
IGlzIGV4ZWN1dGVkIHVuZGVyIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KLSAgICBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUtPnVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpOworICAgIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2soKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwg
bnVtYmVyT2ZGdW5jdGlvbnMgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRl
Y2xzKCk7IGkgPCBudW1iZXJPZkZ1bmN0aW9uczsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA9IHVubGlua2VkQ29k
ZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkg
PSBzeW1ib2xUYWJsZS0+Z2V0KHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCkuaW1w
bCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmNwcAppbmRleCAyNDdmYWE2NWViY2U2ZWEzOTQ3NmNjMjZlZjRk
MmU1MjZkNTllNTY4Li44MTJjMWM3NWE1NTJkNWI2YzkyZWNkNjNlNDQ5NTE1MWQ2NGJhNzc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUuY3BwCkBAIC02Miw3ICs2Miw3IEBAIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGV4ZWN1dGFibGUtPm1f
dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLnNldChnbG9iYWxPYmplY3QtPnZtKCksIGV4
ZWN1dGFibGUsIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGUpOworICAgIGV4ZWN1dGFibGUtPm1f
dW5saW5rZWRDb2RlQmxvY2suc2V0KGdsb2JhbE9iamVjdC0+dm0oKSwgZXhlY3V0YWJsZSwgdW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZSk7CiAKICAgICBleGVjdXRhYmxlLT5tX21vZHVsZUVudmly
b25tZW50U3ltYm9sVGFibGUuc2V0KGdsb2JhbE9iamVjdC0+dm0oKSwgZXhlY3V0YWJsZSwganND
YXN0PFN5bWJvbFRhYmxlKj4odW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZS0+Y29uc3RhbnRSZWdp
c3RlcihWaXJ0dWFsUmVnaXN0ZXIodW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZS0+bW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQoKSkpLmdldCgpKS0+Y2xv
bmVTY29wZVBhcnQoZ2xvYmFsT2JqZWN0LT52bSgpKSk7CiAKQEAgLTg1LDkgKzg1LDcgQEAgdm9p
ZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxs
LCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spOwogICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSk7Ci0gICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsKICAgICBp
ZiAoVGVtcGxhdGVPYmplY3RNYXAqIG1hcCA9IHRoaXNPYmplY3QtPm1fdGVtcGxhdGVPYmplY3RN
YXAuZ2V0KCkpIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRoaXNPYmplY3QtPmNlbGxMb2Nr
KCkgfTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICptYXApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRl
eCA5MjYzNWIzMjIxYjJjNTQxNGFjYTc2ZDE4Yjk4ZThiMWFjOGRlYTE1Li4zOWMyYWE5NGIyY2U0
OTcwYjc1Y2U4MGFiYzk1MjljNjI4OTM5Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTI1LDcgKzI1
LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlLmgiCiAjaW5jbHVkZSAiR2xvYmFsRXhlY3V0YWJsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTQ2LDkgKzQ1LDE0IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIEdsb2JhbEV4ZWN1dGFibGUgewogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKIAotICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaygpCisgICAgTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2U6OnVud3JhcChtX21vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCkpKTsKKyAg
ICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oQmFzZTo6
Y29kZUJsb2NrKCkpOworICAgIH0KKworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayogdW5saW5rZWRDb2RlQmxvY2soKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihCYXNlOjp1bmxpbmtlZENv
ZGVCbG9jaygpKTsKICAgICB9CiAKICAgICBSZWY8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgp
CkBAIC02Myw3ICs2Nyw2IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIEdsb2JhbEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgVW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQog
ICAgIGJvb2wgaXNBc3luYygpIGNvbnN0IHsgcmV0dXJuIGZlYXR1cmVzKCkgJiBBd2FpdEZlYXR1
cmU7IH0KIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkg
eyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgpOyB9CkBAIC03OCw5
ICs4MSw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEds
b2JhbEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKIAotICAgIFdy
aXRlQmFycmllcjxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IG1fdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOwogICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9tb2R1
bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlOwotICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlPiBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFRlbXBsYXRlT2JqZWN0TWFwPiBtX3RlbXBsYXRlT2JqZWN0TWFwOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCmlu
ZGV4IDczMjlmZTI3MDE4Njg0YWIwNWM2YTQ3NzZmYWQyOTZlNTgyODlkNmMuLmNlODI0MmY5ODM1
ZmI2M2NhYmZhMTQ3N2RlOWEyMjNmYjBhZjk4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKQEAgLTE1MCw4ICsxNTAsNyBA
QCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIH0KICAgICB9CiAKLQotICAgIG1fdW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrLnNldCh2bSwgdGhpcywgdW5saW5rZWRDb2RlQmxvY2spOwor
ICAgIG1fdW5saW5rZWRDb2RlQmxvY2suc2V0KHZtLCB0aGlzLCB1bmxpbmtlZENvZGVCbG9jayk7
CiAKICAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciBvcHRpbWl6ZXIodm0sIGdsb2JhbE9i
amVjdCk7CiAKQEAgLTIxNiw4ICsyMTUsNiBAQCB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjp2aXNp
dENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgUHJvZ3Jh
bUV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihjZWxs
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jayk7Ci0gICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm9ncmFtQ29kZUJsb2NrKTsKICAgICBpZiAoVGVt
cGxhdGVPYmplY3RNYXAqIG1hcCA9IHRoaXNPYmplY3QtPm1fdGVtcGxhdGVPYmplY3RNYXAuZ2V0
KCkpIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRoaXNPYmplY3QtPmNlbGxMb2NrKCkgfTsK
ICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICptYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCA1MTM0OTkwMjA0MDc4MTNj
NTllMzI4OGExOGRmMjliYzExMWJmZWMyLi40Mzk0ZTdmZmNiNjhiMjE1MTdjODljY2FiMjhhODM1
NjVmOTJhY2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9n
cmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dy
YW1FeGVjdXRhYmxlLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVkZSAiR2xvYmFsRXhlY3V0
YWJsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTU2LDkgKzU1LDE0IEBAIGNsYXNzIFByb2dy
YW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUgewogCiAgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAgIFByb2dyYW1Db2RlQmxvY2sqIGNvZGVC
bG9jaygpCisgICAgUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UHJvZ3JhbUNvZGVCbG9jayo+KEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U6OnVud3JhcChtX3Byb2dyYW1Db2RlQmxvY2suZ2V0KCkpKTsKKyAgICAg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4oQmFzZTo6Y29kZUJsb2Nr
KCkpOworICAgIH0KKworICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2soKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2sqPihCYXNlOjp1bmxpbmtlZENvZGVCbG9jaygpKTsKICAgICB9CiAK
ICAgICBSZWY8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCkBAIC04Myw4ICs4Nyw2IEBAIGNs
YXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUgewog
CiAgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKIAotICAgIFdyaXRlQmFycmllcjxVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2s+IG1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOwotICAgIFdyaXRl
QmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX3Byb2dyYW1Db2RlQmxvY2s7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRlT2JqZWN0TWFwPiBtX3RlbXBsYXRlT2JqZWN0TWFw
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVj
dXRhYmxlLmNwcAppbmRleCBjNmE5ZWFiNjcxNGNlNDJjNDEwODdiZGIwOGZjOTIxNzRhYzhlY2Jm
Li43MmFhNDVlN2YzOGI4YjM1NzY5N2IzNjUyYWFkZGY3NzMwMzc4YTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXZhbENvZGVCbG9j
ay5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25F
eGVjdXRhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkdsb2JhbEV4ZWN1dGFibGUuaCIKICNpbmNs
dWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgpAQCAtODYsMjAgKzg3
LDIwIEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6Y2xlYXJDb2RlKElzb0NlbGxTZXQmIGNsZWFy
YWJsZUNvZGVTZXQpCiAgICAgfQogICAgIGNhc2UgRXZhbEV4ZWN1dGFibGVUeXBlOiB7CiAgICAg
ICAgIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFi
bGUqPih0aGlzKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV9ldmFsQ29kZUJsb2NrLmNsZWFyKCk7
Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLmNsZWFyKCk7Cisg
ICAgICAgIGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrLmNsZWFyKCk7CisgICAgICAgIGV4ZWN1dGFi
bGUtPm1fdW5saW5rZWRDb2RlQmxvY2suY2xlYXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOiB7CiAgICAgICAgIFByb2dyYW1FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsK
LSAgICAgICAgZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7Ci0gICAgICAg
IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7CisgICAgICAg
IGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrLmNsZWFyKCk7CisgICAgICAgIGV4ZWN1dGFibGUtPm1f
dW5saW5rZWRDb2RlQmxvY2suY2xlYXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2UgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOiB7CiAgICAgICAgIE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqPih0aGlzKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
LmNsZWFyKCk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLmNsZWFyKCk7CisgICAgICAgIGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrLmNsZWFyKCk7
CisgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxvY2suY2xlYXIoKTsKICAgICAg
ICAgZXhlY3V0YWJsZS0+bV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmNsZWFyKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEwOCw3ICsxMDksNyBAQCB2b2lkIFNjcmlwdEV4ZWN1
dGFibGU6OmNsZWFyQ29kZShJc29DZWxsU2V0JiBjbGVhcmFibGVDb2RlU2V0KQogICAgICAgICBi
cmVhazsKICAgICB9CiAKLSAgICBBU1NFUlQoJkhlYXA6OlNwYWNlQW5kU2V0OjpzZXRGb3IoKnN1
YnNwYWNlKCkpID09ICZjbGVhcmFibGVDb2RlU2V0KTsKKyAgICBBU1NFUlQoJkhlYXA6OlNjcmlw
dEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6Y2xlYXJhYmxlQ29kZVNldEZvcigqc3Vic3BhY2UoKSkg
PT0gJmNsZWFyYWJsZUNvZGVTZXQpOwogICAgIGNsZWFyYWJsZUNvZGVTZXQucmVtb3ZlKHRoaXMp
OwogfQogCkBAIC0xMzEsOCArMTMyLDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxs
Q29kZShWTSYgdm0sIENvZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9jaywgQ29kZVR5cGUKICAgICAg
ICAgCiAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKICAgICAgICAgCi0gICAg
ICAgIG9sZENvZGVCbG9jayA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGVB
bmRVbndyYXAoZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrLmdldCgpKTsKLSAgICAgICAg
ZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrLnNldE1heUJlTnVsbCh2bSwgdGhpcywgRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6d3JhcEFuZEFjdGl2YXRlKGNvZGVCbG9jaykpOworICAg
ICAgICBvbGRDb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5yZXBsYWNlQ29kZUJsb2NrV2l0aCh2bSwg
Y29kZUJsb2NrKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xNDIsOCArMTQyLDcgQEAg
dm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShWTSYgdm0sIENvZGVCbG9jayogZ2Vu
ZXJpY0NvZGVCbG9jaywgQ29kZVR5cGUKIAogICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9y
Q2FsbCk7CiAKLSAgICAgICAgb2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6ZGVhY3RpdmF0ZUFuZFVud3JhcChleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxv
Y2suZ2V0KCkpOwotICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2su
c2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5k
QWN0aXZhdGUoY29kZUJsb2NrKSk7CisgICAgICAgIG9sZENvZGVCbG9jayA9IGV4ZWN1dGFibGUt
PnJlcGxhY2VDb2RlQmxvY2tXaXRoKHZtLCBjb2RlQmxvY2spOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKQEAgLTE1Myw4ICsxNTIsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxD
b2RlKFZNJiB2bSwgQ29kZUJsb2NrKiBnZW5lcmljQ29kZUJsb2NrLCBDb2RlVHlwZQogICAgICAg
ICAKICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOwogICAgICAgICAKLSAgICAg
ICAgb2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZUFu
ZFVud3JhcChleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2suZ2V0KCkpOwotICAgICAgICBleGVj
dXRhYmxlLT5tX2V2YWxDb2RlQmxvY2suc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5kQWN0aXZhdGUoY29kZUJsb2NrKSk7CisgICAgICAgIG9s
ZENvZGVCbG9jayA9IGV4ZWN1dGFibGUtPnJlcGxhY2VDb2RlQmxvY2tXaXRoKHZtLCBjb2RlQmxv
Y2spOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMTYyLDE2ICsxNjAsNyBA
QCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2bSwgQ29kZUJsb2NrKiBn
ZW5lcmljQ29kZUJsb2NrLCBDb2RlVHlwZQogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyk7CiAgICAgICAgIEZ1
bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9j
ayo+KGdlbmVyaWNDb2RlQmxvY2spOwogICAgICAgICAKLSAgICAgICAgc3dpdGNoIChraW5kKSB7
Ci0gICAgICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgICAgICBvbGRDb2RlQmxvY2sgPSBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFjdGl2YXRlQW5kVW53cmFwKGV4ZWN1dGFibGUt
Pm1fY29kZUJsb2NrRm9yQ2FsbC5nZXQoKSk7Ci0gICAgICAgICAgICBleGVjdXRhYmxlLT5tX2Nv
ZGVCbG9ja0ZvckNhbGwuc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlOjp3cmFwQW5kQWN0aXZhdGUoY29kZUJsb2NrKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICAgICAgb2xkQ29kZUJsb2Nr
ID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZUFuZFVud3JhcChleGVjdXRh
YmxlLT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKSk7Ci0gICAgICAgICAgICBleGVjdXRh
YmxlLT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5zZXRNYXlCZU51bGwodm0sIHRoaXMsIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3RpdmF0ZShjb2RlQmxvY2spKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIG9sZENvZGVCbG9jayA9IGV4ZWN1dGFi
bGUtPnJlcGxhY2VDb2RlQmxvY2tXaXRoKHZtLCBraW5kLCBjb2RlQmxvY2spOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgfQpAQCAtMTg3LDcgKzE3Niw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0
YWJsZTo6aW5zdGFsbENvZGUoVk0mIHZtLCBDb2RlQmxvY2sqIGdlbmVyaWNDb2RlQmxvY2ssIENv
ZGVUeXBlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGF1dG8mIGNsZWFyYWJsZUNvZGVT
ZXQgPSBIZWFwOjpTcGFjZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgpKTsKKyAgICBhdXRvJiBj
bGVhcmFibGVDb2RlU2V0ID0gSGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0OjpjbGVh
cmFibGVDb2RlU2V0Rm9yKCpzdWJzcGFjZSgpKTsKICAgICBpZiAoaGFzQ2xlYXJhYmxlQ29kZSh2
bSkpCiAgICAgICAgIGNsZWFyYWJsZUNvZGVTZXQuYWRkKHRoaXMpOwogICAgIGVsc2UKQEAgLTIy
NSwyMyArMjE0LDIzIEBAIGJvb2wgU2NyaXB0RXhlY3V0YWJsZTo6aGFzQ2xlYXJhYmxlQ29kZShW
TSYgdm0pIGNvbnN0CiAKICAgICBpZiAoc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCkgPT0gRnVu
Y3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpIHsKICAgICAgICAgYXV0byogZXhlY3V0YWJsZSA9IHN0
YXRpY19jYXN0PGNvbnN0IEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBpZiAo
ZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2tGb3JDYWxsIHx8IGV4ZWN1dGFibGUtPm1fY29kZUJsb2Nr
Rm9yQ29uc3RydWN0KQorICAgICAgICBpZiAoZXhlY3V0YWJsZS0+ZWl0aGVyQ29kZUJsb2NrKCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIH0gZWxzZSBpZiAoc3RydWN0dXJlKHZt
KS0+Y2xhc3NJbmZvKCkgPT0gRXZhbEV4ZWN1dGFibGU6OmluZm8oKSkgewogICAgICAgICBhdXRv
KiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRXZhbEV4ZWN1dGFibGUqPih0aGlzKTsK
LSAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1fZXZhbENvZGVCbG9jayB8fCBleGVjdXRhYmxlLT5t
X3VubGlua2VkRXZhbENvZGVCbG9jaykKKyAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1fY29kZUJs
b2NrIHx8IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxvY2spCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIH0gZWxzZSBpZiAoc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCkgPT0g
UHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgewogICAgICAgICBhdXRvKiBleGVjdXRhYmxlID0g
c3RhdGljX2Nhc3Q8Y29uc3QgUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKLSAgICAgICAgaWYg
KGV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNvZGVCbG9jayB8fCBleGVjdXRhYmxlLT5tX3VubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jaykKKyAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrIHx8
IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIH0gZWxzZSBpZiAoc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCkgPT0gTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgewogICAgICAgICBhdXRvKiBleGVjdXRhYmxlID0g
c3RhdGljX2Nhc3Q8Y29uc3QgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKLSAgICAg
ICAgaWYgKGV4ZWN1dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jawotICAgICAgICAgICAg
fHwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sKKyAgICAgICAg
aWYgKGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrCisgICAgICAgICAgICB8fCBleGVjdXRhYmxlLT5t
X3VubGlua2VkQ29kZUJsb2NrCiAgICAgICAgICAgICB8fCBleGVjdXRhYmxlLT5tX21vZHVsZUVu
dmlyb25tZW50U3ltYm9sVGFibGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC0yNjEsMjUgKzI1MCwyNSBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVC
bG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTRnVuYwogICAgIGlmIChjbGFz
c0luZm8odm0pID09IEV2YWxFeGVjdXRhYmxlOjppbmZvKCkpIHsKICAgICAgICAgRXZhbEV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPih0aGlzKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2spOworICAgICAgICBSRUxFQVNFX0FT
U0VSVCghZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2spOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
ZnVuY3Rpb24pOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgRXZhbENv
ZGVCbG9jazo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkRXZh
bENvZGVCbG9jay5nZXQoKSwgc2NvcGUpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEV2YWxDb2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJs
ZS0+dW5saW5rZWRDb2RlQmxvY2soKSwgc2NvcGUpKTsKICAgICB9CiAKICAgICBpZiAoY2xhc3NJ
bmZvKHZtKSA9PSBQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CiAgICAgICAgIFByb2dyYW1F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOwotICAgICAgICBS
RUxFQVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIWV4ZWN1dGFibGUtPm1fY29kZUJsb2NrKTsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWZ1bmN0aW9uKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIFByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+
bV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlKSk7CisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGUodm0sIGV4
ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrKCksIHNjb3BlKSk7CiAgICAg
fQogCiAgICAgaWYgKGNsYXNzSW5mbyh2bSkgPT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6Omlu
Zm8oKSkgewogICAgICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpz
Q2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOwogICAgICAgICBSRUxFQVNFX0FT
U0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWN1
dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFleGVjdXRhYmxlLT5tX2NvZGVCbG9jayk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFmdW5j
dGlvbik7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPm1fdW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpLCBzY29wZSkpOworICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlKHZt
LCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9jaygpLCBzY29wZSkpOwog
ICAgIH0KIAogICAgIFJFTEVBU0VfQVNTRVJUKGNsYXNzSW5mbyh2bSkgPT0gRnVuY3Rpb25FeGVj
dXRhYmxlOjppbmZvKCkpOwpAQCAtNTM1LDQgKzUyNCw3OCBAQCB1bnNpZ25lZCBTY3JpcHRFeGVj
dXRhYmxlOjplbmRDb2x1bW4oKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBWaXNpdG9yPgordm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpydW5Db25zdHJhaW50KGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKK3sKKyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICBjb2RlQmxvY2st
PnByb3BhZ2F0ZVRyYW5zaXRpb25zKGxvY2tlciwgdmlzaXRvcik7CisgICAgY29kZUJsb2NrLT5k
ZXRlcm1pbmVMaXZlbmVzcyhsb2NrZXIsIHZpc2l0b3IpOworfQorCit0ZW1wbGF0ZSB2b2lkIFNj
cmlwdEV4ZWN1dGFibGU6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
QWJzdHJhY3RTbG90VmlzaXRvciYsIENvZGVCbG9jayopOwordGVtcGxhdGUgdm9pZCBTY3JpcHRF
eGVjdXRhYmxlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RW
aXNpdG9yJiwgQ29kZUJsb2NrKik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Cit2b2lk
IFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q29kZUJsb2NrRWRnZShWaXNpdG9yJiB2aXNpdG9yLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworCisgICAgaWYgKGNv
ZGVCbG9jay0+c2hvdWxkVmlzaXRTdHJvbmdseShsb2NrZXIsIHZpc2l0b3IpKQorICAgICAgICB2
aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jayk7CisKKyAgICBpZiAoSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkgeworICAgICAgICAvLyBJZiB3
ZSBqZXR0aXNvbiBvdXJzZWx2ZXMgd2UnbGwgaW5zdGFsbCBvdXIgYWx0ZXJuYXRpdmUsIHNvIG1h
a2Ugc3VyZSB0aGF0IGl0CisgICAgICAgIC8vIHN1cnZpdmVzIEdDIGV2ZW4gaWYgd2UgZG9uJ3Qu
CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKGNvZGVCbG9jay0+bV9hbHRlcm5hdGl2ZSk7CisgICAg
fQorCisgICAgLy8gTk9URTogVGhlcmUgYXJlIHR3byBzaWRlcyB0byB0aGlzIGNvbnN0cmFpbnQs
IHdpdGggZGlmZmVyZW50IHJlcXVpcmVtZW50cyBmb3IgY29ycmVjdG5lc3MuCisgICAgLy8gQmVj
YXVzZSBldmVyeXRoaW5nIGlzIHVsdGltYXRlbHkgcHJvdGVjdGVkIHdpdGggd2VhayByZWZlcmVu
Y2VzIGFuZCBqZXR0aXNvbmluZywgaXQncworICAgIC8vIGFsd2F5cyAiT0siIHRvIGNsYWltIHRo
YXQgc29tZXRoaW5nIGlzIGRlYWQgcHJlbWF0dXJlbHkgYW5kIGl0J3MgIk9LIiB0byBrZWVwIHRo
aW5ncyBhbGl2ZS4KKyAgICAvLyBCdXQgYm90aCBjaG9pY2VzIGNvdWxkIGxlYWQgdG8gYmFkIHBl
cmYgLSBlaXRoZXIgcmVjb21wIGN5Y2xlcyBvciBsZWFrcy4KKyAgICAvLworICAgIC8vIERldGVy
bWluaW5nIENvZGVCbG9jayBsaXZlbmVzczogVGhpcyBwYXJ0IGlzIHRoZSBtb3N0IGNvbnNlcXVl
bnRpYWwuIFdlIHdhbnQgdG8ga2VlcCB0aGUKKyAgICAvLyBvdXRwdXQgY29uc3RyYWludCBhY3Rp
dmUgc28gbG9uZyBhcyB3ZSB0aGluayB0aGF0IHdlIG1heSB5ZXQgcHJvdmUgdGhhdCB0aGUgQ29k
ZUJsb2NrIGlzCisgICAgLy8gbGl2ZSBidXQgd2UgaGF2ZW4ndCBkb25lIGl0IHlldC4KKyAgICAv
LworICAgIC8vIE1hcmtpbmcgU3RydWN0dXJlcyBpZiBwcm9maXRhYmxlOiBJdCdzIGltcG9ydGFu
dCB0aGF0IHdlIGRvIGEgcGFzcyBvZiB0aGlzLiBMb2dpY2FsbHksIHRoaXMKKyAgICAvLyBzZWVt
cyBsaWtlIGl0IGlzIGEgY29uc3RyYWludCBvZiBDb2RlQmxvY2suIEJ1dCB3ZSBoYXZlIGFsd2F5
cyBmaXJzdCBydW4gdGhpcyBhcyBhIHJlc3VsdAorICAgIC8vIG9mIHRoZSBlZGdlIGJlaW5nIG1h
cmtlZCBldmVuIGJlZm9yZSB3ZSBkZXRlcm1pbmUgdGhlIGxpdmVuZXNzIG9mIHRoZSBDb2RlQmxv
Y2suIFRoaXMKKyAgICAvLyBhbGxvd3MgYSBDb2RlQmxvY2sgdG8gbWFyayBpdHNlbGYgYnkgZmly
c3QgcHJvdmluZyB0aGF0IGFsbCBvZiB0aGUgU3RydWN0dXJlcyBpdCB3ZWFrbHkKKyAgICAvLyBk
ZXBlbmRzIG9uIGNvdWxkIGJlIHN0cm9uZ2x5IG1hcmtlZC4gKFRoaXMgcGFydCBpcyBhbHNvIGNh
bGxlZCBwcm9wYWdhdGVUcmFuc2l0aW9ucy4pCisgICAgLy8KKyAgICAvLyBBcyBhIHdlaXJkIGNh
dmVhdCwgd2Ugb25seSBmaXhwb2ludCB0aGUgY29uc3RyYWludHMgc28gbG9uZyBhcyB0aGUgQ29k
ZUJsb2NrIGlzIG5vdCBsaXZlLgorICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSBtYXkgb3Zlcmxv
b2sgc3RydWN0dXJlIG1hcmtpbmcgb3Bwb3J0dW5pdGllcyBjcmVhdGVkIGJ5IG90aGVyIG1hcmtp
bmcKKyAgICAvLyB0aGF0IGhhcHBlbnMgYWZ0ZXIgdGhlIENvZGVCbG9jayBpcyBtYXJrZWQuIFRo
aXMgd2FzIGFuIGFjY2lkZW50YWwgcG9saWN5IGRlY2lzaW9uIGZyb20gYQorICAgIC8vIGxvbmcg
dGltZSBhZ28sIGJ1dCBpdCBpcyBwcm9iYWJseSBPSywgc2luY2UgaXQncyBvbmx5IHdvcnRod2hp
bGUgdG8ga2VlcCBmaXhwb2ludGluZyB0aGUKKyAgICAvLyBzdHJ1Y3R1cmUgbWFya2luZyBpZiB3
ZSBzdGlsbCBoYXZlIHVubWFya2VkIHN0cnVjdHVyZXMgYWZ0ZXIgdGhlIGZpcnN0IHJvdW5kLiBX
ZSBhbG1vc3QKKyAgICAvLyBuZXZlciB3aWxsIGJlY2F1c2Ugd2Ugd2lsbCBtYXJrLWlmLXByb2Zp
dGFibGUgYmFzZWQgb24gdGhlIG93bmluZyBnbG9iYWwgb2JqZWN0IGJlaW5nCisgICAgLy8gYWxy
ZWFkeSBtYXJrZWQuIFdlIG1hcmsgaXQganVzdCBpbiBjYXNlIHRoYXQgaGFkbid0IGhhcHBlbmVk
IHlldC4gQW5kIGlmIHRoZSBDb2RlQmxvY2sgaXMKKyAgICAvLyBub3QgeWV0IG1hcmtlZCBiZWNh
dXNlIGl0IHdlYWtseSBkZXBlbmRzIG9uIGEgc3RydWN0dXJlIHRoYXQgd2UgZGlkIG5vdCB5ZXQg
bWFyaywgdGhlbiB3ZQorICAgIC8vIHdpbGwga2VlcCBmaXhwb2ludGluZyB1bnRpbCB0aGUgZW5k
LgorICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSk7CisgICAgcnVuQ29uc3RyYWludChsb2NrZXIsIHZpc2l0b3IsIGNvZGVCbG9jayk7Cit9CisK
K3RlbXBsYXRlIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDb2RlQmxvY2tFZGdlKEFic3Ry
YWN0U2xvdFZpc2l0b3ImLCBDb2RlQmxvY2sqKTsKK3RlbXBsYXRlIHZvaWQgU2NyaXB0RXhlY3V0
YWJsZTo6dmlzaXRDb2RlQmxvY2tFZGdlKFNsb3RWaXNpdG9yJiwgQ29kZUJsb2NrKik7CisKK3Zv
aWQgU2NyaXB0RXhlY3V0YWJsZTo6ZmluYWxpemVDb2RlQmxvY2tFZGdlKFZNJiB2bSwgV3JpdGVC
YXJyaWVyPENvZGVCbG9jaz4mIGNvZGVCbG9ja0VkZ2UpCit7CisgICAgYXV0byogY29kZUJsb2Nr
ID0gY29kZUJsb2NrRWRnZS5nZXQoKTsKKyAgICBpZiAoIWNvZGVCbG9jaykKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKGNvZGVCbG9jaykpIHsKKyAgICAgICAg
aWYgKGNvZGVCbG9jay0+c2hvdWxkSmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2Uodm0pKQorICAg
ICAgICAgICAgY29kZUJsb2NrLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb1dlYWtS
ZWZlcmVuY2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlQmxvY2stPmpldHRpc29u
KFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvT2xkQWdlKTsKKyAgICAgICAgaWYgKGNvZGVCbG9jayA9
PSBjb2RlQmxvY2tFZGdlLmdldCgpKQorICAgICAgICAgICAgY29kZUJsb2NrRWRnZS5jbGVhcigp
OworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKaW5kZXggNzVkYWVlNGI4ZjI4YjViYzEw
ZTBlNjFjMjM2OTBlNjQ5MjA3NTE4My4uMDlhZjgxNDFmODNhODg0ZTA1OTYyYzA4NWQwNjU4YzI3
NzFiNzFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0
RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4
ZWN1dGFibGUuaApAQCAtMTM5LDYgKzEzOSwxMiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlIDog
cHVibGljIEV4ZWN1dGFibGVCYXNlIHsKIAogICAgIHN0YXRpYyBUZW1wbGF0ZU9iamVjdE1hcCYg
ZW5zdXJlVGVtcGxhdGVPYmplY3RNYXBJbXBsKHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0ZU9iamVj
dE1hcD4mIGRlc3QpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KKyAgICBzdGF0
aWMgdm9pZCBydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZpc2l0b3Im
LCBDb2RlQmxvY2sqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgorICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q29kZUJsb2NrRWRnZShWaXNpdG9yJiwgQ29kZUJsb2NrKik7CisgICAgdm9p
ZCBmaW5hbGl6ZUNvZGVCbG9ja0VkZ2UoVk0mLCBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiYpOwor
CiAgICAgU291cmNlQ29kZSBtX3NvdXJjZTsKICAgICBJbnRyaW5zaWMgbV9pbnRyaW5zaWMgeyBO
b0ludHJpbnNpYyB9OwogICAgIGJvb2wgbV9kaWRUcnlUb0VudGVySW5Mb29wIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBlMzJkY2IwYWQzNGIyM2JjZGEy
NDcxYTAzZWU5MmNiNTIzMzM4MjM4Li4zYmI0NThlZThlMzZkNmI0ZTI2NWZkYjljMTkzYTJlZGQy
MmRlMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00Nyw3ICs0Nyw2
IEBACiAjaW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkV2YWxDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlLmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRmlsZUJhc2VkRnV6
emVyQWdlbnQuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgpAQCAtMjk4LDcgKzI5
Nyw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5M
b29wKiBydW5Mb29wLCBib29sKiBzdWNjZXNzKQogICAgIGhhc2hNYXBCdWNrZXRTZXRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pjo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwogICAgIGhhc2hNYXBCdWNrZXRN
YXBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5
VmFsdWU+OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CiAgICAg
YmlnSW50U3RydWN0dXJlLnNldCgqdGhpcywgSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgbnVsbHB0ciwganNOdWxsKCkpKTsKLSAgICBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3Ry
dWN0dXJlLnNldCgqdGhpcywgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwogCiAgICAgLy8gRWFnZXJseSBpbml0aWFs
aXplIGNvbnN0YW50IGNlbGxzIHNpbmNlIHRoZSBjb25jdXJyZW50IGNvbXBpbGVyIGNhbiBhY2Nl
c3MgdGhlbS4KICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCmluZGV4IDFlOWUwYjQ4YzMyMjA2MmZlZTg5NjUzNWY1MTE1YTU2M2NhNDUzOTUu
LjY2NTY4ZjI5ZmUwYmZlM2YwM2U4MDhmYzEyNGZiZDg1MmNiYzVkZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaApAQCAtMzczLDkgKzM3Myw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7
CiAKICAgICBGT1JfRUFDSF9KU0NfRFlOQU1JQ19JU09fU1VCU1BBQ0UoREVGSU5FX0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0FDQ0VTU09SX0lNUEwpCiAKLSAgICBBTFdBWVNfSU5MSU5FIElzb0NlbGxT
ZXQmIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkgeyByZXR1cm4g
aGVhcC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50czsgfQotICAgIEFM
V0FZU19JTkxJTkUgSXNvQ2VsbFNldCYgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmlu
YWxpemVycygpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmlu
YWxpemVyczsgfQotCiAgICAgQUxXQVlTX0lOTElORSBHQ0NsaWVudDo6SXNvU3Vic3BhY2UmIGNv
ZGVCbG9ja1NwYWNlKCkgeyByZXR1cm4gY2xpZW50SGVhcC5jb2RlQmxvY2tTcGFjZTsgfQogCiAg
ICAgREVGSU5FX0RZTkFNSUNfSVNPX1NVQlNQQUNFX0FDQ0VTU09SKGV2YWxFeGVjdXRhYmxlU3Bh
Y2UpCkBAIC00NDEsNyArNDM4LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBoYXNoTWFwQnVja2V0U2V0U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGhhc2hNYXBCdWNrZXRNYXBTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gYmln
SW50U3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VTdHJ1Y3R1cmU7CiAKICAgICBTdHJvbmc8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yPiBt
X2VtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456206</attachid>
            <date>2022-03-31 00:05:54 -0700</date>
            <delta_ts>2022-03-31 11:38:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238485-20220331000554.patch</filename>
            <type>text/plain</type>
            <size>89535</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDE3MTc2YmU2MThhZGY2NWU5ZTE1MGIxYjhkNTdjYzEyZmU3MzFkLi5lZWQ3YjdmNGQ2OTllNDMx
ZDNkNmEwZTRiYmY5YThlYjQ3ODY2YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTUgQEAKKzIwMjItMDMtMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDg1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgdHVybmVkIG91
dCB0aGF0IGdldHRpbmcgQ29kZUJsb2NrIGZyb20gSlNGdW5jdGlvbiBpcyBjcml0aWNhbC4gQXMg
d2Ugc3RhcnQgdXNpbmcgdW5saW5rZWQgQmFzZWxpbmUsIHdlIGFyZSBsb2FkaW5nCisgICAgICAg
IENvZGVCbG9jayBmcm9tIEpTRnVuY3Rpb24gaW5zdGVhZCBvZiBlbWJlZGRpbmcgaXQsIGFuZCBp
dCByb3VnaGx5IGNvbnRyaWJ1dGVzIHRvIDAuNSUgcmVncmVzc2lvbiBpbiBTcGVlZG9tZXRlcjIu
CisgICAgICAgIEl0IGlzIGFsc28gY3J1Y2lhbCB0byBzb21lIG90aGVyIHBsYWNlczogYm91bmQg
ZnVuY3Rpb24gdGh1bmssIHJlbW90ZSBmdW5jdGlvbiB0aHVuaywgYW5kIHZpcnR1YWwgZnVuY3Rp
b24gY2FsbHMuCisgICAgICAgIFdoaWxlIHRoZSBzdWJzZXF1ZW50IHBhdGNoIHdpbGwgZW1iZWQg
Q29kZUJsb2NrIGludG8gQ2FsbExpbmtJbmZvIHRvIG1ha2UgaXQgZmFzdCwgd2UgYWxzbyB3b3Vs
ZCBsaWtlIHRvIGtlZXAgbG9hZGluZworICAgICAgICBDb2RlQmxvY2sgZnJvbSBKU0Z1bmN0aW9u
IGZhc3RlciBzaW5jZSB0aGlzIGlzIHN0aWxsIHVzZWQgaW4gYm91bmQgZnVuY3Rpb24gdGh1bmsg
ZXRjLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIHJlbW92ZSBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlIHRvIHJlbW92ZSBvbmUtbGV2ZWwgaW5kaXJlY3Rpb24gYmV0d2VlbiBFeGVjdXRh
YmxlIHRvIENvZGVCbG9jay4KKyAgICAgICAgV2UgY2FuIGRlbGVnYXRlIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UncyBqb2IgdG8gZXhpc3RpbmcgRXhlY3V0YWJsZXMgc28gdGhhdCB3ZSBjYW4g
a2VlcCB0aGUgY3VycmVudCB3ZWFrLWVkZ2UKKyAgICAgICAgZmVhdHVyZSB3aXRob3V0IGludHJv
ZHVjaW5nIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuIEl0IGFsc28gcmVtb3ZlcyBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlIGFsbG9jYXRpb25zIGFuZAorICAgICAgICBzaHJpbmtzIHNpemVv
ZihDb2RlQmxvY2spIGJ5IDggYnl0ZS4KKworICAgICAgICBXZSBtb3ZlIGtleSBmdW5jdGlvbnMg
ZnJvbSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlIHRvIFNjcmlwdEV4ZWN1dGFibGUsIGFuZCB3
ZSBtYWludGFpbiBFeGVjdXRhYmxlLXRvLUNvZGVCbG9jayBlZGdlCisgICAgICAgIGluIEV4ZWN1
dGFibGUgc2lkZS4KKworICAgICAgICBMb2NhbCB0ZXN0aW5nIHNob3dlZCB0aGF0IDAuMyUgcHJv
Z3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZl
cmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbkNvbW1vbik6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6b3duZXJFZGdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmg6IFJlbW92ZWQuCisgICAgICAgICogaGVh
cC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChKU0M6Okhl
YXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAoSlNDOjpIZWFw
OjpkZWxldGVBbGxDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkQ29yZUNvbnN0
cmFpbnRzKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6U2Ny
aXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0OjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6OnNldEFuZFNw
YWNlRm9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0
OjpjbGVhcmFibGVDb2RlU2V0Rm9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6U2NyaXB0RXhlY3V0
YWJsZVNwYWNlQW5kU2V0OjpvdXRwdXRDb25zdHJhaW50c1NldEZvcik6CisgICAgICAgIChKU0M6
OkhlYXA6OlNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6ZmluYWxpemVyU2V0Rm9yKToKKyAg
ICAgICAgKiBoZWFwL0lzb0NlbGxTZXQuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvRGly
ZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBy
dW50aW1lL0V2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpj
b2RlQmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6dW5saW5rZWRD
b2RlQmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6bnVtVmFyaWFi
bGVzKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om51bUZ1bmN0aW9uSG9pc3RpbmdD
YW5kaWRhdGVzKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om51bVRvcExldmVsRnVu
Y3Rpb25EZWNscyk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjphbGxvd0RpcmVjdEV2
YWxDYWNoZSBjb25zdCk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb2RlQmxvY2sp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6Cisg
ICAgICAgIChKU0M6OnNob3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbCk6CisgICAgICAgICog
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZTo6cmVwbGFjZUNvZGVCbG9ja1dpdGgpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpHbG9iYWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAg
ICAgIChKU0M6Okdsb2JhbEV4ZWN1dGFibGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHNJbXBsKToK
KyAgICAgICAgKEpTQzo6R2xvYmFsRXhlY3V0YWJsZTo6cmVwbGFjZUNvZGVCbG9ja1dpdGgpOgor
ICAgICAgICAoSlNDOjpHbG9iYWxFeGVjdXRhYmxlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6
CisgICAgICAgICogcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6Okds
b2JhbEV4ZWN1dGFibGU6OmNvZGVCbG9jayBjb25zdCk6CisgICAgICAgIChKU0M6Okdsb2JhbEV4
ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50
aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbklt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3Jh
bUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6Y2xlYXJDb2RlKToKKyAgICAg
ICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUpOgorICAgICAgICAoSlNDOjpT
Y3JpcHRFeGVjdXRhYmxlOjpoYXNDbGVhcmFibGVDb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6U2NyaXB0
RXhlY3V0YWJsZTo6cnVuQ29uc3RyYWludCk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6OnZpc2l0Q29kZUJsb2NrRWRnZSk6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmg6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlSW5saW5lcy5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVJ
bmxpbmVzLmguCisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OmZpbmFsaXplQ29kZUJs
b2NrRWRnZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpW
TSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6ZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpWTTo6ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk6IERlbGV0ZWQu
CisKIDIwMjItMDMtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBPcHRpbWl6ZSB0aGUgY29uc3RydWN0aW9uIG9mIGEgSlNDOjpJZGVudGlmaWVyIGZyb20gYW4g
QVNDSUlMaXRlcmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDE4YWZl
ZDcxNjI5Y2UwNzE2MzZkOWZmYTRjZGU3YWJmY2E5NGFmZC4uMjlhN2FmOWEyZGU2ODYyOWI3OGYw
MjBmMWQ5ZDgxNzA5ZGEzYjI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNjI3LDcgKzYyNyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCiAgICAgYnl0ZWNvZGUvRGlyZWN0RXZh
bENvZGVDYWNoZS5oCiAgICAgYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAotICAgIGJ5dGVjb2Rl
L0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50
ZXIuaAogICAgIGJ5dGVjb2RlL0V4aXRLaW5kLmgKICAgICBieXRlY29kZS9FeGl0aW5nSW5saW5l
S2luZC5oCkBAIC0xMTUzLDYgKzExNTIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvU2NvcGVkQXJndW1lbnRzVGFibGUuaAogICAg
IHJ1bnRpbWUvU2NyaWJibGUuaAogICAgIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCisgICAg
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlSW5saW5lcy5oCiAgICAgcnVudGltZS9TY3JpcHRGZXRj
aFBhcmFtZXRlcnMuaAogICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hlci5oCiAgICAgcnVudGltZS9T
aGFkb3dSZWFsbU9iamVjdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyOTYx
OTdjYWY5YTE2ZDFjMzk1MTI4OTA0NmI0Njc5MTk2ZjBjZTguLjEwMmYyZDY0Nzg3YzZkNDBmODI5
NmY3MDNjOTU2YjA3OWJlOGZjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0z
NzAsNyArMzcwLDYgQEAKIAkJMEY1RTBGRDgyMDdDNzI3MzAwOTdGMERFIC8qIERGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNUUwRkQ2MjA3QzcyNzEwMDk3RjBERSAvKiBERkdBYnN0cmFjdElu
dGVycHJldGVyQ2xvYmJlclN0YXRlLmggKi87IH07CiAJCTBGNUUwRkU3MjA4NkFENDgwMDk3RjBE
RSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJW
TS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NUVGOTFGMTY4NzhGN0QwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUVGOTFDMTY4NzhGNzgwMDNFNUMyNSAvKiBK
SVRUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQkwRjYwRkU5MDFGRkMzNzAyMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MEZF
OEUxRkZDMzZGRDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYxODMyQTFDNDVC
RjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyog
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi87IH07CiAJCTBGNjE4MzJEMUM0NUJGMDcwMDcyNDUw
QiAvKiBBaXJFbWl0U2h1ZmZsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2MTgzMjQxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVtaXRTaHVmZmxlLmgg
Ki87IH07CiAJCTBGNjE4MzJGMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJMb3dlckFmdGVyUmVnQWxs
b2MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4
MzI2MUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJMb3dlckFmdGVyUmVnQWxsb2MuaCAqLzsgfTsKQEAg
LTE5ODksNiArMTk4OCw3IEBACiAJCUUzODZGRDdFMjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3Jh
bFBsYWluVGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM4NkZENzgyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lLmggKi87IH07
CiAJCUUzODZGRDdGMjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NkZE
NzkyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmggKi87IH07
CiAJCUUzODkzQTFEMjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzg5M0ExQzIyMDNBN0M2MDBFNzlBNzQgLyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90
eXBlLmx1dC5oICovOyB9OworCQlFMzhEQjJFNzI3RjU4OEY4MDAyN0JEM0YgLyogU2NyaXB0RXhl
Y3V0YWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzOERCMkU2MjdGNTg4RjcwMDI3QkQzRiAvKiBTY3JpcHRFeGVjdXRhYmxlSW5saW5l
cy5oICovOyB9OwogCQlFMzhFODc5MDI1NEI5Nzg0MDBGNkY5RTQgLyogSlNEYXRlTWF0aC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzg4RkMyMjE0
NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5jcHAgKi87IH07CiAJCUUzOTAwNjIxMjIwOEJG
QzQwMDEwMTlDRiAvKiBTdWJzcGFjZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5MDA2MjAyMjA4QkZDMzAwMTAxOUNGIC8qIFN1YnNwYWNl
QWNjZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTM5MkU2RjgyNEQyNUZBNjAwQjIwNzY3IC8qIEIzQm90dG9tVHVwbGVWYWx1ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzkyRTZGNjI0RDI1
RkE2MDBCMjA3NjcgLyogQjNCb3R0b21UdXBsZVZhbHVlLmNwcCAqLzsgfTsKQEAgLTI4OTcsOCAr
Mjg5Nyw2IEBACiAJCTBGNUUwRkU2MjA4NkFENDcwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZN
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElzb1N1YnNwYWNlUGVy
Vk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFRjkxQjE2ODc4Rjc4MDAz
RTVDMjUgLyogSklUVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpJVFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUVGOTFD
MTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSklUVGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNjBG
RThEMUZGQzM2RkMwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjYwRkU4RTFGRkMzNkZEMDAw
MzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0Nv
bnZlbnRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJDQ2FsbGluZ0NvbnZlbnRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1
MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEFpckNDYWxsaW5nQ29udmVudGlvbi5oOyBwYXRoID0gYjMvYWlyL0FpckNDYWxsaW5n
Q29udmVudGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYxODMyMjFDNDVC
RjA3MDA3MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEFpckN1c3RvbS5jcHA7IHBhdGggPSBiMy9haXIvQWlyQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0NzksNiArNTQ3Nyw3IEBACiAJCUUzOEQwNjBC
MUY4RTgxNDEwMDY0OUNGMiAvKiBKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwQzFGOEU4MTQxMDA2NDlDRjIgLyogU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dEZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYw
RDFGOEU4MTQxMDA2NDlDRjIgLyogSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzhEQjJFNjI3RjU4OEY3MDAyN0JEM0Yg
LyogU2NyaXB0RXhlY3V0YWJsZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0RXhlY3V0YWJsZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM5MDA2MjAyMjA4QkZDMzAwMTAxOUNGIC8qIFN1YnNwYWNlQWNjZXNzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1YnNwYWNlQWNjZXNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOTE1QzA2MjMwOTY4MjkwMENCMjU2MSAvKiBXYXNtQ29udGV4
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzOTJFNkY2MjREMjVGQTYwMEIyMDc2NyAvKiBCM0JvdHRvbVR1cGxl
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNCb3R0b21U
dXBsZVZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzQm90dG9tVHVwbGVWYWx1ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjI0LDYgKzgyMjMsNyBAQAogCQkJCTMzMTExQjhBMjM5
NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovLAogCQkJCTE0NzM0MUUwMURDMkNFOTYwMEFB
MjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFDRDFEQzAyRDc5MDBB
QTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5oICovLAorCQkJCUUzOERCMkU2MjdGNTg4RjcwMDI3
QkQzRiAvKiBTY3JpcHRFeGVjdXRhYmxlSW5saW5lcy5oICovLAogCQkJCTg4NTIxNTFBOUMzODQy
Mzg5QjMyMTVCNyAvKiBTY3JpcHRGZXRjaGVyLmggKi8sCiAJCQkJRTM4RDA2MEMxRjhFODE0MTAw
NjQ5Q0YyIC8qIFNjcmlwdEZldGNoUGFyYW1ldGVycy5oICovLAogCQkJCUE3Mjk5REEzMTdEMTI4
NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5jcHAgKi8sCkBAIC04OTc3LDggKzg5NzcsNiBA
QAogCQkJCTE0QUQ5MTEyMURDQTk3RkQwMDE0RjlGRSAvKiBFdmFsQ29kZUJsb2NrLmNwcCAqLywK
IAkJCQkxNEFEOTEwNjFEQ0E5Mjk0MDAxNEY5RkUgLyogRXZhbENvZGVCbG9jay5oICovLAogCQkJ
CTE0MTQyRTUyMUI3OTZFREQwMEY0QkY0QiAvKiBFeGVjdXRhYmxlSW5mby5oICovLAotCQkJCTBG
NjBGRThEMUZGQzM2RkMwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcCAq
LywKLQkJCQkwRjYwRkU4RTFGRkMzNkZEMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZS5oICovLAogCQkJCTBGNTZBMUQ0MTUwMDFDRjIwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3Vu
dGVyLmNwcCAqLywKIAkJCQkwRjU2QTFEMTE1MDAwRjMxMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291
bnRlci5oICovLAogCQkJCTBGNDRBN0E5MjBCRjY4NUUwMDIyQjE3MSAvKiBFeGl0RmxhZy5jcHAg
Ki8sCkBAIC0xMDI3Myw3ICsxMDI3MSw2IEBACiAJCQkJRTM1QTBCOUQyMjBBRDg3QTAwQUM0NDc0
IC8qIEV4ZWN1dGFibGVCYXNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxNDJFNTMx
Qjc5NkVERDAwRjRCRjRCIC8qIEV4ZWN1dGFibGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjUxOTNGNzI2NkM0MzJEMDA0ODNBMkMgLyogRXhlY3V0YWJsZU1lbW9yeUhhbmRsZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMEY2MEZFOTAxRkZDMzcwMjAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTZBMUQzMTUwMDBGMzUwMDI5OTJC
MSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ0QTdCMDIwQkY2
ODYyMDAyMkIxNzEgLyogRXhpdEZsYWcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDRBN0IxMjBC
RjY4QzkwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MTA0NCw2ICsxMTA0MSw3IEBACiAJCQkJQTVGRDAwNzAxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlw
dENhbGxTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwN0UxODlCMEI0QzAwNjMzMjMx
IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzM0MUNF
MURDMDJENzkwMEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFMzhEQjJFNzI3RjU4OEY4MDAyN0JEM0YgLyogU2NyaXB0RXhlY3V0YWJsZUlubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUNFQUU3RDdCODg5QjQ3N0JBOTNBQkE2QyAvKiBTY3JpcHRGZXRj
aGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzIwMUMxRTFGOEU4MjRDMDA3NkEwMzIgLyogU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4
MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4NGE5NjI0MWRiMWQ4M2JiY2RhZDNjMTllY2EzZTUzOWM2
ZmI3YmY3Li4wNTA2OWM1NDg5MjQ4YTdkMDJjNTc2ZDAwYjkzMTIxNmE0MDNlYTI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yMjksNyArMjI5LDYgQEAgYnl0ZWNvZGUvRGVsZXRl
QnlTdGF0dXMuY3BwCiBieXRlY29kZS9EZWxldGVCeVZhcmlhbnQuY3BwCiBieXRlY29kZS9EaXJl
Y3RFdmFsQ29kZUNhY2hlLmNwcAogYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5jcHAKLWJ5dGVjb2Rl
L0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCiBieXRlY29kZS9FeGVjdXRpb25Db3VudGVy
LmNwcAogYnl0ZWNvZGUvRXhpdEZsYWcuY3BwCiBieXRlY29kZS9FeGl0S2luZC5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNmQ5ZDhiNTFl
MTE5ZGJjMDc4MDkxMTRlMWNiMTBlZGI2NzI4NDU3OC4uNmIwMjkxNTBiNTEyYmMzOTVhMzE5MDI4
ZTJlYzVhN2Q4ZWY4YTg4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKQEAgLTMxMSw3ICszMTEsNiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jawog
dm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFn
LCBDb2RlQmxvY2smIG90aGVyKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAg
ICBmaW5pc2hDcmVhdGlvbkNvbW1vbih2bSk7CiAKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7
CiAKQEAgLTM2Nyw3ICszNjYsNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIEpTU2Nv
cGUqIHNjb3BlKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmaW5pc2hD
cmVhdGlvbkNvbW1vbih2bSk7CiAKICAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOwog
CkBAIC03NjYsMTEgKzc2NCw2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbkNvbW1vbihWTSYgdm0p
Ci17Ci0gICAgbV9vd25lckVkZ2Uuc2V0KHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlOjpjcmVhdGUodm0sIHRoaXMpKTsKLX0KLQogI2lmIEVOQUJMRShKSVQpCiB2b2lkIENvZGVC
bG9jazo6c2V0dXBXaXRoVW5saW5rZWRCYXNlbGluZUNvZGUoUmVmPEJhc2VsaW5lSklUQ29kZT4g
aml0Q29kZSkKIHsKQEAgLTEwNTEsNyArMTA0NCw2IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdENo
aWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgQ29kZUJsb2Nr
KiB0aGlzT2JqZWN0ID0ganNDYXN0PENvZGVCbG9jayo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKGNlbGwsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb3du
ZXJFZGdlKTsKICAgICB0aGlzT2JqZWN0LT52aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogfQogCkBA
IC0xMDc5LDcgKzEwNzEsNyBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGxvY2tlciwgdmlz
aXRvcik7CiAgICAgc3Ryb25nbHlWaXNpdFdlYWtSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7
CiAgICAgCi0gICAgSGVhcDo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSkuYWRkKHRo
aXMpOworICAgIEhlYXA6OkNvZGVCbG9ja1NwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkp
LmFkZCh0aGlzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTE2NjcsNyAr
MTY1OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0p
CiAgICAgfTsKICAgICB1cGRhdGVBY3Rpdml0eSgpOwogCi0gICAgSGVhcDo6U3BhY2VBbmRTZXQ6
OnNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOworICAgIEhlYXA6OkNvZGVCbG9ja1Nw
YWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKIAogICAgIC8vIElu
IENvZGVCbG9jazo6c2hvdWxkVmlzaXRTdHJvbmdseSgpIHdlIG1heSBoYXZlIGRlY2lkZWQgdG8g
c2tpcCB2aXNpdGluZyB0aGlzCiAgICAgLy8gY29kZUJsb2NrLiBCeSB0aGUgdGltZSB3ZSBnZXQg
aGVyZSwgd2UncmUgZG9uZSB3aXRoIHRoZSB2ZXJpZmllciBHQy4gU28sIGxldCdzCkBAIC0xODM0
LDcgKzE4MjYsNyBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5j
ZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsCiAgICAgVU5VU0VEX1BBUkFNKGxv
Y2tlcik7CiAgICAgCiAgICAgdmlzaXRvci5hcHBlbmQobV9nbG9iYWxPYmplY3QpOwotICAgIHZp
c2l0b3IuYXBwZW5kKG1fb3duZXJFeGVjdXRhYmxlKTsgLy8gVGhpcyBpcyBleHRyYSBpbXBvcnRh
bnQgc2luY2UgaXQgY2F1c2VzIHRoZSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlIHRvIGJlIG1h
cmtlZC4KKyAgICB2aXNpdG9yLmFwcGVuZChtX293bmVyRXhlY3V0YWJsZSk7IC8vIFRoaXMgaXMg
ZXh0cmEgaW1wb3J0YW50IHNpbmNlIGl0IGNhdXNlcyB0aGUgRXhlY3V0YWJsZSAtPiBDb2RlQmxv
Y2sgZWRnZSBhY3RpdmF0ZWQuCiAgICAgdmlzaXRvci5hcHBlbmQobV91bmxpbmtlZENvZGUpOwog
ICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2RpcmVjdEV2YWxDb2Rl
Q2FjaGUudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNDY5NjNkNzNkZTIzZTAxZmQxNTI1NDUxYTgzNDdiNmM3
NzVjMTgyNi4uMjdhODMzNTE4MDAxMzY5ODU0MmU0N2I1NDNjYWIzMmJhM2FjY2YzMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtODcsMTIgKzg3LDEy
IEBAIGNsYXNzIFVuYXJ5QXJpdGhQcm9maWxlOwogY2xhc3MgQmluYXJ5QXJpdGhQcm9maWxlOwog
Y2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgQ29kZUJsb2NrU2V0OwotY2xh
c3MgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTsKIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7
CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBMTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ7CiBjbGFzcyBNZXRhZGF0YVRhYmxlOwogY2xhc3Mg
UmVnaXN0ZXJBdE9mZnNldExpc3Q7CitjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU3Ry
dWN0dXJlU3R1YkluZm87CiBjbGFzcyBCYXNlbGluZUpJVENvZGU7CiBjbGFzcyBCYXNlbGluZUpJ
VERhdGE7CkBAIC0xMzQsOCArMTM0LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgQ29weVBhcnNlZEJsb2NrVGFnLCBD
b2RlQmxvY2smIG90aGVyKTsKICAgICBib29sIGZpbmlzaENyZWF0aW9uKFZNJiwgU2NyaXB0RXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTU2NvcGUqKTsK
LSAgICAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uQ29tbW9uKFZNJik7CiAKICAgICBXcml0ZUJh
cnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogCkBAIC0zNjksOCArMzY3LDYg
QEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgCiAgICAgU2NyaXB0RXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9vd25lckV4ZWN1dGFi
bGUuZ2V0KCk7IH0KICAgICAKLSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBvd25lckVk
Z2UoKSBjb25zdCB7IHJldHVybiBtX293bmVyRWRnZS5nZXQoKTsgfQotCiAgICAgVk0mIHZtKCkg
Y29uc3QgeyByZXR1cm4gKm1fdm07IH0KIAogICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzUmVnaXN0
ZXIoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+dGhpc1JlZ2lzdGVyKCk7IH0KQEAg
LTg0OSw3ICs4NDUsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrU2V0OwotICAgIGZyaWVuZCBjbGFzcyBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOworICAgIGZyaWVuZCBjbGFzcyBGdW5jdGlvbkV4ZWN1
dGFibGU7CisgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWaXNpdG9yPiBBTFdBWVNfSU5MSU5FIHZvaWQgdmlzaXRDaGlsZHJlbihWaXNp
dG9yJik7CiAKQEAgLTkyMyw3ICs5MjAsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKIAogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZENvZGVCbG9jaz4gbV91bmxpbmtlZENv
ZGU7CiAgICAgV3JpdGVCYXJyaWVyPFNjcmlwdEV4ZWN1dGFibGU+IG1fb3duZXJFeGVjdXRhYmxl
OwotICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX293bmVyRWRn
ZTsKICAgICAvLyBtX3ZtIG11c3QgYmUgYSBwb2ludGVyIChpbnN0ZWFkIG9mIGEgcmVmZXJlbmNl
KSBiZWNhdXNlIHRoZSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IKICAgICAvLyBjYW5ub3QgaGFu
ZGxlIGl0IGJlaW5nIGEgcmVmZXJlbmNlLgogICAgIFZNKiBtX3ZtOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmRkYjdhNjY1Nzk5YjY3NzY3
YjMwNGZlNWYzNTg5NDdhZDQ3OTM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKLQotI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCi0jaW5jbHVk
ZSAiSlNPYmplY3RJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2U6OnNfaW5mbyA9IHsgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UiX3MsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZSkgfTsKLQotU3RydWN0dXJlKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKLXsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwotfQotCi1FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlOjpjcmVhdGUoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKLXsKLSAgICBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bSkpIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Uo
dm0sIGNvZGVCbG9jayk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFT
U0VSVCghaXNBY3RpdmUoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lk
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2Vs
bCwgVmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7Ci0gICAg
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSA9IGpzQ2FzdDxFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlKj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjZWxsLCBp
bmZvKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7Ci0KLSAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGVkZ2UtPm1fY29kZUJsb2NrLmdldCgpOwotCi0gICAgLy8g
SXQncyBwb3NzaWJsZSBmb3Igc29tZW9uZSB0byBob2xkIGEgcG9pbnRlciB0byB0aGUgZWRnZSBh
ZnRlciB0aGUgZWRnZSBoYXMgY2xlYXJlZCBpdHMgd2VhawotICAgIC8vIHJlZmVyZW5jZSB0byB0
aGUgY29kZUJsb2NrLiBJbiBhIGNvbnNlcnZhdGl2ZSBHQyBsaWtlIG91cnMsIHRoYXQgY291bGQg
aGFwcGVuIGF0IHJhbmRvbSBmb3IKLSAgICAvLyBubyBnb29kIHJlYXNvbiBhbmQgaXQncyBUb3Rh
bGx5IE9LIChUTSkuIFNlZSBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpIGZvciB3aGVyZSB3ZSBj
bGVhcgotICAgIC8vIG1fY29kZUJsb2NrLgotICAgIGlmICghY29kZUJsb2NrKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgaWYgKCFlZGdlLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIHZpc2l0
b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsK
LQotICAgIGlmIChjb2RlQmxvY2stPnNob3VsZFZpc2l0U3Ryb25nbHkobG9ja2VyLCB2aXNpdG9y
KSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwotICAgIAot
ICAgIGlmICghdmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkuYWRkKGVkZ2UpOwotICAgIAotICAg
IGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKSB7Ci0g
ICAgICAgIC8vIElmIHdlIGpldHRpc29uIG91cnNlbHZlcyB3ZSdsbCBpbnN0YWxsIG91ciBhbHRl
cm5hdGl2ZSwgc28gbWFrZSBzdXJlIHRoYXQgaXQKLSAgICAgICAgLy8gc3Vydml2ZXMgR0MgZXZl
biBpZiB3ZSBkb24ndC4KLSAgICAgICAgdmlzaXRvci5hcHBlbmQoY29kZUJsb2NrLT5tX2FsdGVy
bmF0aXZlKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gTk9URTogVGhlcmUgYXJlIHR3byBzaWRlcyB0
byB0aGlzIGNvbnN0cmFpbnQsIHdpdGggZGlmZmVyZW50IHJlcXVpcmVtZW50cyBmb3IgY29ycmVj
dG5lc3MuCi0gICAgLy8gQmVjYXVzZSBldmVyeXRoaW5nIGlzIHVsdGltYXRlbHkgcHJvdGVjdGVk
IHdpdGggd2VhayByZWZlcmVuY2VzIGFuZCBqZXR0aXNvbmluZywgaXQncwotICAgIC8vIGFsd2F5
cyAiT0siIHRvIGNsYWltIHRoYXQgc29tZXRoaW5nIGlzIGRlYWQgcHJlbWF0dXJlbHkgYW5kIGl0
J3MgIk9LIiB0byBrZWVwIHRoaW5ncyBhbGl2ZS4KLSAgICAvLyBCdXQgYm90aCBjaG9pY2VzIGNv
dWxkIGxlYWQgdG8gYmFkIHBlcmYgLSBlaXRoZXIgcmVjb21wIGN5Y2xlcyBvciBsZWFrcy4KLSAg
ICAvLwotICAgIC8vIERldGVybWluaW5nIENvZGVCbG9jayBsaXZlbmVzczogVGhpcyBwYXJ0IGlz
IHRoZSBtb3N0IGNvbnNlcXVlbnRpYWwuIFdlIHdhbnQgdG8ga2VlcCB0aGUKLSAgICAvLyBvdXRw
dXQgY29uc3RyYWludCBhY3RpdmUgc28gbG9uZyBhcyB3ZSB0aGluayB0aGF0IHdlIG1heSB5ZXQg
cHJvdmUgdGhhdCB0aGUgQ29kZUJsb2NrIGlzCi0gICAgLy8gbGl2ZSBidXQgd2UgaGF2ZW4ndCBk
b25lIGl0IHlldC4KLSAgICAvLwotICAgIC8vIE1hcmtpbmcgU3RydWN0dXJlcyBpZiBwcm9maXRh
YmxlOiBJdCdzIGltcG9ydGFudCB0aGF0IHdlIGRvIGEgcGFzcyBvZiB0aGlzLiBMb2dpY2FsbHks
IHRoaXMKLSAgICAvLyBzZWVtcyBsaWtlIGl0IGlzIGEgY29uc3RyYWludCBvZiBDb2RlQmxvY2su
IEJ1dCB3ZSBoYXZlIGFsd2F5cyBmaXJzdCBydW4gdGhpcyBhcyBhIHJlc3VsdAotICAgIC8vIG9m
IHRoZSBlZGdlIGJlaW5nIG1hcmtlZCBldmVuIGJlZm9yZSB3ZSBkZXRlcm1pbmUgdGhlIGxpdmVu
ZXNzIG9mIHRoZSBDb2RlQmxvY2suIFRoaXMKLSAgICAvLyBhbGxvd3MgYSBDb2RlQmxvY2sgdG8g
bWFyayBpdHNlbGYgYnkgZmlyc3QgcHJvdmluZyB0aGF0IGFsbCBvZiB0aGUgU3RydWN0dXJlcyBp
dCB3ZWFrbHkKLSAgICAvLyBkZXBlbmRzIG9uIGNvdWxkIGJlIHN0cm9uZ2x5IG1hcmtlZC4gKFRo
aXMgcGFydCBpcyBhbHNvIGNhbGxlZCBwcm9wYWdhdGVUcmFuc2l0aW9ucy4pCi0gICAgLy8KLSAg
ICAvLyBBcyBhIHdlaXJkIGNhdmVhdCwgd2Ugb25seSBmaXhwb2ludCB0aGUgY29uc3RyYWludHMg
c28gbG9uZyBhcyB0aGUgQ29kZUJsb2NrIGlzIG5vdCBsaXZlLgotICAgIC8vIFRoaXMgbWVhbnMg
dGhhdCB3ZSBtYXkgb3Zlcmxvb2sgc3RydWN0dXJlIG1hcmtpbmcgb3Bwb3J0dW5pdGllcyBjcmVh
dGVkIGJ5IG90aGVyIG1hcmtpbmcKLSAgICAvLyB0aGF0IGhhcHBlbnMgYWZ0ZXIgdGhlIENvZGVC
bG9jayBpcyBtYXJrZWQuIFRoaXMgd2FzIGFuIGFjY2lkZW50YWwgcG9saWN5IGRlY2lzaW9uIGZy
b20gYQotICAgIC8vIGxvbmcgdGltZSBhZ28sIGJ1dCBpdCBpcyBwcm9iYWJseSBPSywgc2luY2Ug
aXQncyBvbmx5IHdvcnRod2hpbGUgdG8ga2VlcCBmaXhwb2ludGluZyB0aGUKLSAgICAvLyBzdHJ1
Y3R1cmUgbWFya2luZyBpZiB3ZSBzdGlsbCBoYXZlIHVubWFya2VkIHN0cnVjdHVyZXMgYWZ0ZXIg
dGhlIGZpcnN0IHJvdW5kLiBXZSBhbG1vc3QKLSAgICAvLyBuZXZlciB3aWxsIGJlY2F1c2Ugd2Ug
d2lsbCBtYXJrLWlmLXByb2ZpdGFibGUgYmFzZWQgb24gdGhlIG93bmluZyBnbG9iYWwgb2JqZWN0
IGJlaW5nCi0gICAgLy8gYWxyZWFkeSBtYXJrZWQuIFdlIG1hcmsgaXQganVzdCBpbiBjYXNlIHRo
YXQgaGFkbid0IGhhcHBlbmVkIHlldC4gQW5kIGlmIHRoZSBDb2RlQmxvY2sgaXMKLSAgICAvLyBu
b3QgeWV0IG1hcmtlZCBiZWNhdXNlIGl0IHdlYWtseSBkZXBlbmRzIG9uIGEgc3RydWN0dXJlIHRo
YXQgd2UgZGlkIG5vdCB5ZXQgbWFyaywgdGhlbiB3ZQotICAgIC8vIHdpbGwga2VlcCBmaXhwb2lu
dGluZyB1bnRpbCB0aGUgZW5kLgotICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNX
aXRoQ29uc3RyYWludHMoKS5hZGQoZWRnZSk7Ci0gICAgZWRnZS0+cnVuQ29uc3RyYWludChsb2Nr
ZXIsIHZtLCB2aXNpdG9yKTsKLX0KLQotREVGSU5FX1ZJU0lUX0NISUxEUkVOKEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2UpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotdm9pZCBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbChKU0NlbGwq
IGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgVk0mIHZtID0gdmlzaXRvci52bSgpOwot
ICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2UgPSBqc0Nhc3Q8RXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZSo+KGNlbGwpOwotICAgIAotICAgIGVkZ2UtPnJ1bkNvbnN0cmFpbnQoTm9M
b2NraW5nTmVjZXNzYXJ5LCB2bSwgdmlzaXRvcik7Ci19Ci0KLURFRklORV9WSVNJVF9PVVRQVVRf
Q09OU1RSQUlOVFMoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSk7Ci0KLXZvaWQgRXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQotewotICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2suZ2V0KCk7Ci0gICAgCi0gICAgaWYg
KCF2bS5oZWFwLmlzTWFya2VkKGNvZGVCbG9jaykpIHsKLSAgICAgICAgaWYgKGNvZGVCbG9jay0+
c2hvdWxkSmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2Uodm0pKQotICAgICAgICAgICAgY29kZUJs
b2NrLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2UpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBjb2RlQmxvY2stPmpldHRpc29uKFByb2ZpbGVyOjpKZXR0
aXNvbkR1ZVRvT2xkQWdlKTsKLSAgICAgICAgbV9jb2RlQmxvY2suY2xlYXIoKTsKLSAgICB9Ci0g
ICAgCi0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpLnJl
bW92ZSh0aGlzKTsKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJh
aW50cygpLnJlbW92ZSh0aGlzKTsKLX0KLQotaW5saW5lIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZTo6YWN0aXZhdGUoKQotewotICAgIHNldFBlckNlbGxCaXQodHJ1ZSk7Ci19Ci0KLWlu
bGluZSB2b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGUoKQotewotICAg
IHNldFBlckNlbGxCaXQoZmFsc2UpOwotfQotCi1pbmxpbmUgYm9vbCBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHBlckNlbGxCaXQoKTsK
LX0KLQotQ29kZUJsb2NrKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFjdGl2YXRlQW5k
VW53cmFwKEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2UpCi17Ci0gICAgaWYgKCFlZGdl
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBlZGdlLT5kZWFjdGl2YXRlKCk7Ci0gICAg
cmV0dXJuIGVkZ2UtPmNvZGVCbG9jaygpOwotfQotCi1FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
KiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwKENvZGVCbG9jayogY29kZUJsb2NrKQot
ewotICAgIGlmICghY29kZUJsb2NrKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gY29kZUJsb2NrLT5vd25lckVkZ2UoKTsKLX0KLSAgICAKLUV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2UqIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3RpdmF0ZShDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKLXsKLSAgICBpZiAoIWNvZGVCbG9jaykKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogcmVzdWx0ID0gY29kZUJsb2Nr
LT5vd25lckVkZ2UoKTsKLSAgICByZXN1bHQtPmFjdGl2YXRlKCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6RXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQotICAgIDogQmFzZSh2bSwgdm0uZXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fY29kZUJsb2Nr
KHZtLCB0aGlzLCBjb2RlQmxvY2spCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+
Ci12b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgVmlzaXRvciYgdmlzaXRvcikKLXsKLSAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2NrLmdldCgpOwotICAgIAotICAgIGNv
ZGVCbG9jay0+cHJvcGFnYXRlVHJhbnNpdGlvbnMobG9ja2VyLCB2aXNpdG9yKTsKLSAgICBjb2Rl
QmxvY2stPmRldGVybWluZUxpdmVuZXNzKGxvY2tlciwgdmlzaXRvcik7Ci0KLSAgICBpZiAodmlz
aXRvci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhDb25zdHJhaW50cygpLnJlbW92ZSh0aGlzKTsKLX0KLQotdGVtcGxhdGUgdm9p
ZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIFZNJiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwotdGVtcGxhdGUgdm9pZCBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIFZNJiwgU2xvdFZpc2l0b3ImKTsKLQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYTZmOWI0
ZThlMWFhYTJlNzBhM2QwMWNmMzlmMjk2NmJjOTM0NjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKLSNpbmNsdWRlICJJc29T
dWJzcGFjZS5oIgotI2luY2x1ZGUgIkpTQ2FzdC5oIgotI2luY2x1ZGUgIlZNLmgiCi0KLW5hbWVz
cGFjZSBKU0MgewotCi1jbGFzcyBDb2RlQmxvY2s7Ci1jbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7Ci0KLWNsYXNzIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UgZmluYWwgOiBwdWJsaWMgSlND
ZWxsIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0
cnVjdHVyZUlzSW1tb3J0YWw7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+Ci0gICAgc3RhdGljIEdDQ2xpZW50OjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlU3BhY2UoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQotICAgIHN0
YXRpYyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBjcmVhdGUoVk0mLCBDb2RlQmxvY2sqKTsK
LSAgICAKLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLmdldCgpOyB9Ci0KLSAgICBERUNMQVJFX1ZJU0lUX0NI
SUxEUkVOOwotICAgIERFQ0xBUkVfVklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTOwotICAgIHZvaWQg
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKLSAgICAKLSAgICBzdGF0aWMgQ29kZUJsb2Nr
KiB1bndyYXAoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSkKLSAgICB7Ci0gICAgICAg
IGlmICghZWRnZSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4g
ZWRnZS0+Y29kZUJsb2NrKCk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBDb2RlQmxvY2sqIGRl
YWN0aXZhdGVBbmRVbndyYXAoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSk7Ci0gICAg
Ci0gICAgc3RhdGljIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIHdyYXAoQ29kZUJsb2NrKiBj
b2RlQmxvY2spOwotICAgIAotICAgIHN0YXRpYyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiB3
cmFwQW5kQWN0aXZhdGUoQ29kZUJsb2NrKiBjb2RlQmxvY2spOwotCi0gICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkNvZGVCbG9jaygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlLCBtX2NvZGVCbG9jayk7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAgIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UoVk0mLCBDb2RlQmxvY2sqKTsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKLQotICAgIHZvaWQgYWN0aXZhdGUoKTsKLSAgICB2b2lkIGRlYWN0aXZhdGUoKTsKLSAg
ICBib29sIGlzQWN0aXZlKCkgY29uc3Q7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9y
PiB2b2lkIHJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBWaXNp
dG9yJik7Ci0KLSAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA4
ZTUzZGRlYWQxZmQ0NTU4MGY1Zjk0ZDQ4ZWNmYWNlMTdjNzc3MDYxLi43MWI4NzgzYjJiZjZhMjFj
Njk2MzYzNzUyNTU2M2I0MzU4ZDZjNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cApAQCAtMzY4LDggKzM2OCw2IEBAIEhlYXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIs
ICp0aGlzLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0
b3IuZ2V0KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQogICAgIEZPUl9FQUNIX0pTQ19DT01NT05fSVNP
X1NVQlNQQUNFKElOSVRfU0VSVkVSX0lTT19TVUJTUEFDRSkKICAgICBGT1JfRUFDSF9KU0NfU1RS
VUNUVVJFX0lTT19TVUJTUEFDRShJTklUX1NFUlZFUl9TVFJVQ1RVUkVfSVNPX1NVQlNQQUNFKQot
ICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNX
aXRoRmluYWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCiAgICAgLCBjb2Rl
QmxvY2tTcGFjZUFuZFNldCBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgQ29kZUJsb2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKICAgICAsIGZ1bmN0
aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1
OGYzCiAgICAgLCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlQW5kU2V0IElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9ncmFtRXhlY3V0YWJsZSkg
Ly8gSGFzaDoweDUyN2M3N2U3CkBAIC02NzQsOSArNjcyLDIyIEBAIHZvaWQgSGVhcDo6ZmluYWxp
emVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpCiB7CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsK
ICAgICB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsK
LSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0
YWJsZT4oZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQuc3BhY2UpOworCisgICAgeworICAg
ICAgICAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5h
bGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5z
dGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCisKKyAgICAg
ICAgLy8gRnVuY3Rpb25FeGVjdXRhYmxlIHJlcXVpcmVzIGFsbCBsaXZlIGluc3RhbmNlcyB0byBy
dW4gZmluYWxpemVycy4gVGh1cywgd2UgZG8gbm90IHVzZSBmaW5hbGl6ZXIgc2V0LgorICAgICAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJs
ZT4oZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQuc3BhY2UpOworCisgICAgICAgIGZpbmFs
aXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8UHJvZ3JhbUV4ZWN1dGFibGU+KHByb2dy
YW1FeGVjdXRhYmxlU3BhY2VBbmRTZXQuZmluYWxpemVyU2V0KTsKKyAgICAgICAgaWYgKG1fZXZh
bEV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8RXZhbEV4ZWN1dGFibGU+KG1fZXZhbEV4ZWN1dGFibGVTcGFjZS0+ZmluYWxp
emVyU2V0KTsKKyAgICAgICAgaWYgKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKKyAg
ICAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8TW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGU+KG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZS0+ZmluYWxpemVy
U2V0KTsKKyAgICB9CisKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PFN5bWJvbFRhYmxlPihzeW1ib2xUYWJsZVNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KGV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29k
ZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0
IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxp
emVVbmNvbmRpdGlvbmFsbHkuCisKICAgICBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoCiAgICAgICAg
IFsmXSAoYXV0byYgc3BhY2UpIHsKICAgICAgICAgICAgIHRoaXMtPmZpbmFsaXplTWFya2VkVW5j
b25kaXRpb25hbEZpbmFsaXplcnM8Q29kZUJsb2NrPihzcGFjZS5zZXQpOwpAQCAtMTAwMyw3ICsx
MDE0LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKERlbGV0ZUFsbENvZGVFZmZv
cnQgZWZmb3J0KQogICAgIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoCiAgICAgICAgIFsm
XSAoYXV0byYgc3BhY2VBbmRTZXQpIHsKICAgICAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBo
ZWFwSXRlcmF0aW9uU2NvcGUoKnRoaXMpOwotICAgICAgICAgICAgYXV0byYgc2V0ID0gc3BhY2VB
bmRTZXQuc2V0OworICAgICAgICAgICAgYXV0byYgc2V0ID0gc3BhY2VBbmRTZXQuY2xlYXJhYmxl
Q29kZVNldDsKICAgICAgICAgICAgIHNldC5mb3JFYWNoTGl2ZUNlbGwoCiAgICAgICAgICAgICAg
ICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKICAgICAgICAgICAgICAg
ICAgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PFNjcmlwdEV4
ZWN1dGFibGUqPihjZWxsKTsKQEAgLTI5MTcsNyArMjkyOCwxMiBAQCB2b2lkIEhlYXA6OmFkZENv
cmVDb25zdHJhaW50cygpCiAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBTZXRSb290
TWFya1JlYXNvblNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBSb290TWFya1JlYXNvbjo6RXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZXMpOwotICAgICAgICAgICAgICAgIGFkZChoZWFwLT5leGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyk7CisgICAgICAgICAgICAgICAgYWRk
KGhlYXAtPmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0Lm91dHB1dENvbnN0cmFpbnRzU2V0
KTsKKyAgICAgICAgICAgICAgICBhZGQoaGVhcC0+cHJvZ3JhbUV4ZWN1dGFibGVTcGFjZUFuZFNl
dC5vdXRwdXRDb25zdHJhaW50c1NldCk7CisgICAgICAgICAgICAgICAgaWYgKGhlYXAtPm1fZXZh
bEV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAgICAgICAgICAgYWRkKGhlYXAtPm1fZXZhbEV4
ZWN1dGFibGVTcGFjZS0+b3V0cHV0Q29uc3RyYWludHNTZXQpOworICAgICAgICAgICAgICAgIGlm
IChoZWFwLT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCisgICAgICAgICAgICAgICAg
ICAgIGFkZChoZWFwLT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UtPm91dHB1dENvbnN0
cmFpbnRzU2V0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChoZWFwLT5tX3dlYWtN
YXBTcGFjZSkgewogICAgICAgICAgICAgICAgIFNldFJvb3RNYXJrUmVhc29uU2NvcGUgcm9vdFNj
b3BlKHZpc2l0b3IsIFJvb3RNYXJrUmVhc29uOjpXZWFrTWFwU3BhY2UpOwpAQCAtMzE2OSwxOCAr
MzE4NSwxOCBAQCBGT1JfRUFDSF9KU0NfRFlOQU1JQ19JU09fU1VCU1BBQ0UoREVGSU5FX0RZTkFN
SUNfSVNPX1NVQlNQQUNFX01FTUJFUl9TTE9XKQogCiAjdW5kZWYgREVGSU5FX0RZTkFNSUNfSVNP
X1NVQlNQQUNFX01FTUJFUl9TTE9XCiAKLSNkZWZpbmUgREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5E
X1NFVF9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKKyNkZWZpbmUgREVG
SU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUs
IHR5cGUsIHNwYWNlVHlwZSkgXAogICAgIElzb1N1YnNwYWNlKiBIZWFwOjpuYW1lIyNTbG93KCkg
XAogICAgIHsgXAogICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAotICAgICAgICBhdXRvIHNw
YWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGhl
YXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8c3Bh
Y2VUeXBlPiBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAog
ICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBcCiAgICAgICAgIG1fIyNuYW1lID0gV1RG
TW92ZShzcGFjZSk7IFwKICAgICAgICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKICAgICB9
CiAKLURFRklORV9EWU5BTUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NMT1coZXZhbEV4ZWN1dGFi
bGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFibGUpIC8v
IEhhc2g6MHg5NThlM2U5ZAotREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xP
Vyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY1MDZmYTNjCitERUZJTkVf
RFlOQU1JQ19TUEFDRV9BTkRfU0VUX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV2YWxFeGVjdXRhYmxlLCBIZWFwOjpTY3JpcHRF
eGVjdXRhYmxlU3BhY2VBbmRTZXQpIC8vIEhhc2g6MHg5NThlM2U5ZAorREVGSU5FX0RZTkFNSUNf
U1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSwgSGVh
cDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0KSAvLyBIYXNoOjB4NjUwNmZhM2MKIAogI3Vu
ZGVmIERFRklORV9EWU5BTUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NMT1cKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCmluZGV4IGFmMGU0YzQ2YTZjZWE3MDZiY2IxYWVlYzQxMmYxOWQ1MWJi
NDgxNTIuLmZhZDg1OTk4ZWE0N2I5MjFkYzQ2YjU5MzMwMjU0MWUyYmZlM2I3YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTEyMCw3ICsxMjAsNiBAQCBjbGFzcyBIZWFwOwogICAg
IHYoZGF0ZUluc3RhbmNlU3BhY2UsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRGF0ZUluc3Rh
bmNlKSBcCiAgICAgdihkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZSwgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKSBcCiAgICAgdihleGNlcHRpb25TcGFjZSwg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXhjZXB0aW9uKSBcCi0gICAgdihleGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UpIFwKICAgICB2KGZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpT
RnVuY3Rpb24pIFwKICAgICB2KGdldHRlclNldHRlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBH
ZXR0ZXJTZXR0ZXIpIFwKICAgICB2KGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlLCBnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50KSBcCkBAIC0xMDI5LDEwICsxMDI4LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgRk9SX0VBQ0hf
SlNDX0RZTkFNSUNfSVNPX1NVQlNQQUNFKERFRklORV9EWU5BTUlDX0lTT19TVUJTUEFDRV9NRU1C
RVIpCiAjdW5kZWYgREVGSU5FX0RZTkFNSUNfSVNPX1NVQlNQQUNFX01FTUJFUgogICAgIAotICAg
IElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7Ci0g
ICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOwot
Ci0jZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKKyNk
ZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobmFtZSwgdHlwZSkgXAog
ICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKICAgICBJc29TdWJzcGFjZSogbmFt
ZSgpIFwKICAgICB7IFwKQEAgLTEwNDMsNyArMTAzOSw3IEBAIGNsYXNzIEhlYXAgewogICAgICAg
ICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCiAgICAgfSBcCiAgICAgSXNvU3Vic3BhY2UqIG5hbWUj
I1Nsb3coKTsgXAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGFjZUFuZFNldD4gbV8jI25hbWU7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPHR5cGU+IG1fIyNuYW1lOwogICAgIAogICAgIHN0cnVjdCBTcGFj
ZUFuZFNldCB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKQEAgLTEw
NjcsNyArMTA2Myw4IEBAIGNsYXNzIEhlYXAgewogICAgICAgICB9CiAgICAgfTsKIAotICAgIFNw
YWNlQW5kU2V0IGNvZGVCbG9ja1NwYWNlQW5kU2V0OworICAgIHVzaW5nIENvZGVCbG9ja1NwYWNl
QW5kU2V0ID0gU3BhY2VBbmRTZXQ7CisgICAgQ29kZUJsb2NrU3BhY2VBbmRTZXQgY29kZUJsb2Nr
U3BhY2VBbmRTZXQ7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9y
RWFjaENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCkBAIC0xMDc1LDEwICsxMDcyLDM5
IEBAIGNsYXNzIEhlYXAgewogICAgICAgICBmdW5jKGNvZGVCbG9ja1NwYWNlQW5kU2V0KTsKICAg
ICB9CiAKLSAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihldmFsRXhlY3V0
YWJsZVNwYWNlKQotICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCi0gICAgU3BhY2VBbmRTZXQgZnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2VBbmRTZXQ7Ci0gICAgU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZUFu
ZFNldDsKKyAgICBzdHJ1Y3QgU2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0IHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIElzb1N1YnNwYWNlIHNw
YWNlOworICAgICAgICBJc29DZWxsU2V0IGNsZWFyYWJsZUNvZGVTZXQ7CisgICAgICAgIElzb0Nl
bGxTZXQgb3V0cHV0Q29uc3RyYWludHNTZXQ7CisgICAgICAgIElzb0NlbGxTZXQgZmluYWxpemVy
U2V0OworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICAgICAg
U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAg
ICAgICAgICAgIDogc3BhY2Uoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikK
KyAgICAgICAgICAgICwgY2xlYXJhYmxlQ29kZVNldChzcGFjZSkKKyAgICAgICAgICAgICwgb3V0
cHV0Q29uc3RyYWludHNTZXQoc3BhY2UpCisgICAgICAgICAgICAsIGZpbmFsaXplclNldChzcGFj
ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIFNjcmlwdEV4ZWN1dGFi
bGVTcGFjZUFuZFNldCYgc2V0QW5kU3BhY2VGb3IoU3Vic3BhY2UmIHNwYWNlKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxTY3JpcHRFeGVjdXRhYmxlU3BhY2VB
bmRTZXQqPigKKyAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZzcGFjZSkgLQor
ICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRT
ZXQsIHNwYWNlKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgSXNvQ2VsbFNldCYgY2xl
YXJhYmxlQ29kZVNldEZvcihTdWJzcGFjZSYgc3BhY2UpIHsgcmV0dXJuIHNldEFuZFNwYWNlRm9y
KHNwYWNlKS5jbGVhcmFibGVDb2RlU2V0OyB9CisgICAgICAgIHN0YXRpYyBJc29DZWxsU2V0JiBv
dXRwdXRDb25zdHJhaW50c1NldEZvcihTdWJzcGFjZSYgc3BhY2UpIHsgcmV0dXJuIHNldEFuZFNw
YWNlRm9yKHNwYWNlKS5vdXRwdXRDb25zdHJhaW50c1NldDsgfQorICAgICAgICBzdGF0aWMgSXNv
Q2VsbFNldCYgZmluYWxpemVyU2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkgeyByZXR1cm4gc2V0QW5k
U3BhY2VGb3Ioc3BhY2UpLmZpbmFsaXplclNldDsgfQorICAgIH07CisKKyAgICBEWU5BTUlDX1NQ
QUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNwYWNlLCBTY3JpcHRFeGVj
dXRhYmxlU3BhY2VBbmRTZXQpCisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1C
RVIobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwgU2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5k
U2V0KQorICAgIFNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZUFuZFNldDsKKyAgICBTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1
dGFibGVTcGFjZUFuZFNldDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9p
ZCBmb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCkBAIC0xMDkx
LDcgKzExMTcsOCBAQCBjbGFzcyBIZWFwIHsKICAgICAgICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJs
ZVNwYWNlQW5kU2V0KTsKICAgICB9CiAKLSAgICBTcGFjZUFuZFNldCB1bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlQW5kU2V0OworICAgIHVzaW5nIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2VBbmRTZXQgPSBTcGFjZUFuZFNldDsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZVNwYWNlQW5kU2V0IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQ7CiAK
ICAgICBWZWN0b3I8SXNvU3Vic3BhY2VQZXJWTSo+IHBlclZNSXNvU3Vic3BhY2VzOwogI3VuZGVm
IERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29DZWxsU2V0LmgKaW5kZXggY2NiODQ1ZWExMWZiZWE4ZTJhZGNlNTY2MWJkZWE4YzIx
ZTlhMmE5Zi4uOGJkN2U3ZWE1YTk0MjNlYWVhYWMwZjk0OWMxMGM0YzFmMGJhN2NkMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaApAQCAtMjksNiArMjksOCBAQAogI2lu
Y2x1ZGUgPHd0Zi9CaXRtYXAuaD4KICNpbmNsdWRlIDx3dGYvQ29uY3VycmVudFZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisjaW5jbHVkZSA8d3RmL05vbm1vdmFibGUuaD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxM
aW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KIApAQCAtNDAsNyArNDIs
OSBAQCBjbGFzcyBJc29TdWJzcGFjZTsKIC8vIENyZWF0ZSBhIHNldCBvZiBjZWxscyB0aGF0IGFy
ZSBpbiBhbiBJc29TdWJzcGFjZS4gVGhpcyBhbGxvd3MgY29uY3VycmVudCBPKDEpIHNldCBpbnNl
cnRpb24gYW5kCiAvLyByZW1vdmFsLiBFYWNoIHN1Y2ggc2V0IHNob3VsZCBiZSB0aG91Z2h0IG9m
IGFzIGEgMC44JSBpbmNyZWFzZSBpbiBvYmplY3Qgc2l6ZSBmb3Igb2JqZWN0cyBpbiB0aGF0CiAv
LyBJc29TdWJzcGFjZSAoaXQncyBsaWtlIGFkZGluZyAxIGJpdCBldmVyeSAxNiBieXRlcywgb3Ig
MSBiaXQgZXZlcnkgMTI4IGJpdHMpLgotY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBQYWNrZWRS
YXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4geworY2xhc3MgSXNvQ2VsbFNldCBmaW5hbCA6IHB1
YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4geworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKElzb0NlbGxTZXQpOworICAgIFdURl9NQUtFX05PTk1PVkFCTEUoSXNvQ2VsbFNl
dCk7CiBwdWJsaWM6CiAgICAgSXNvQ2VsbFNldChJc29TdWJzcGFjZSYgc3Vic3BhY2UpOwogICAg
IH5Jc29DZWxsU2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZjEyMzU1Nzgy
MGMzNGY4NzYyYzE4YTk1MDNmM2E5NmY3YjRjNjQxMi4uZWQ4ZmIwZjUzZTU3YTVhNTAyZjFjYTI3
NjA1NDY3MDkwMGU4YmU5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE1LDgg
KzIxNSw2IEBAIHZvaWQgSklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BS
UmVnIHJlc3VsdCkKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVj
dXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpKSwgcmVzdWx0KTsKICAgICBl
bHNlCiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxsKCkpLCByZXN1bHQpOwotCi0gICAgbG9hZFB0cihBZGRy
ZXNzKHJlc3VsdCwgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6b2Zmc2V0T2ZDb2RlQmxvY2so
KSksIHJlc3VsdCk7CiAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlc3VsdCwgQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggM2Uy
YzZkZjYwYTQ3OGNhMTA5YWFkYThjMzNkNjBjOTk0YjVkM2MwMS4uMWZkYjRhNTdkNTk0YmVlYTZl
YmI4MGFhNjk3YmRhZDQzZjkwZjg3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTQ5Myw3ICsxNDkzLDYgQEAgbWFj
cm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQogICAgIGxv
YWRwIChGdW5jdGlvblJhcmVEYXRhOjptX2V4ZWN1dGFibGUgLSAoY29uc3RleHByIEpTRnVuY3Rp
b246OnJhcmVEYXRhVGFnKSlbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgogLmlzRXhl
Y3V0YWJsZToKICAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2Fs
bFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgbG9hZHAgRXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZTo6bV9jb2RlQmxvY2tbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3Rl
cgogZW5kCiAKIG1hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdl
dFJlZ2lzdGVyKQpAQCAtMTUwNyw3ICsxNTA2LDYgQEAgbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCiAgICAgbG9hZHAgKEZ1bmN0aW9uUmFy
ZURhdGE6Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcp
KVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCiAuaXNFeGVjdXRhYmxlOgogICAgIGxv
YWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVn
aXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGxvYWRwIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2U6Om1fY29kZUJsb2NrW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKIGVuZAogCiBt
YWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNw
cAppbmRleCBjYTAwZmIxYzZiNmRhNjk3NmZjYjE2ZTE2N2VmNjgyNDE2ZTE3MTYwLi45ZDY4NWE3
NTJjNjVmODViNTU4NmRmOGU1MzAwZDBhY2U2M2Q2YTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC02Myw3
ICs2Myw3IEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldCh2
bSwgZXhlY3V0YWJsZSwgdW5saW5rZWRFdmFsQ29kZSk7CisgICAgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZENvZGVCbG9jay5zZXQodm0sIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUpOwogCiAg
ICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggZGQ4NDkzMzgyZmY2MTQxMGJiZWVlZGQwYmJl
Mjc3ZGM1MjA4ZTYyZi4uYjg4NDljY2UxMTU3YzZkMWUzNDFlYWVmZGZhMWY0MWI4YzJlZjEwMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNw
cApAQCAtNTYsOCArNTYsNiBAQCB2b2lkIEV2YWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1w
bChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgRXZhbEV4ZWN1dGFibGUqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihjZWxsKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX3VubGlua2VkRXZhbENvZGVCbG9jayk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9ldmFsQ29kZUJsb2NrKTsKICAgICBpZiAoVGVtcGxhdGVPYmplY3RNYXAqIG1hcCA9IHRo
aXNPYmplY3QtPm1fdGVtcGxhdGVPYmplY3RNYXAuZ2V0KCkpIHsKICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IHRoaXNPYmplY3QtPmNlbGxMb2NrKCkgfTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRy
eSA6ICptYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFs
RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFi
bGUuaAppbmRleCA2NjMwNTRmYTU2N2IzZGFmYmYxMDNkMjg1OTczYWNkODE1NGJkMjc2Li5lODVh
M2E3YTM1ZmVmY2IzYTY2MmIwZmYwYzg0ZGQwYWExMjg5OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgiCiAj
aW5jbHVkZSAiR2xvYmFsRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlVubGlua2VkRXZhbENvZGVC
bG9jay5oIgogCkBAIC0zOSw5ICszOCwxNCBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1Ymxp
YyBHbG9iYWxFeGVjdXRhYmxlIHsKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CiAgICAgCi0gICAgRXZhbENvZGVCbG9jayogY29kZUJsb2NrKCkKKyAgICBFdmFsQ29kZUJsb2Nr
KiBjb2RlQmxvY2soKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxF
dmFsQ29kZUJsb2NrKj4oRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dW53cmFwKG1fZXZhbENv
ZGVCbG9jay5nZXQoKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEV2YWxDb2RlQmxv
Y2sqPihCYXNlOjpjb2RlQmxvY2soKSk7CisgICAgfQorCisgICAgVW5saW5rZWRFdmFsQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PFVubGlua2VkRXZhbENvZGVCbG9jayo+KEJhc2U6OnVubGlua2VkQ29kZUJsb2Nr
KCkpOwogICAgIH0KIAogICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKQEAgLTYy
LDEwICs2NiwxMCBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBHbG9iYWxFeGVjdXRh
YmxlIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygp
IHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQotICAg
IHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7IH0KLSAg
ICB1bnNpZ25lZCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2Vk
RXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KLSAgICBib29sIGFsbG93
RGlyZWN0RXZhbENhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2st
PmFsbG93RGlyZWN0RXZhbENhY2hlKCk7IH0KKyAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7
IHJldHVybiB1bmxpbmtlZENvZGVCbG9jaygpLT5udW1WYXJpYWJsZXMoKTsgfQorICAgIHVuc2ln
bmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gdW5saW5rZWRDb2Rl
QmxvY2soKS0+bnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKTsgfQorICAgIHVuc2lnbmVk
IG51bVRvcExldmVsRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrKCkt
Pm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CisgICAgYm9vbCBhbGxvd0RpcmVjdEV2YWxDYWNo
ZSgpIGNvbnN0IHsgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrKCktPmFsbG93RGlyZWN0RXZhbENh
Y2hlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyPihtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsgfQogICAgIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQpOyB9CiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFw
KFZNJik7CkBAIC04Miw4ICs4Niw2IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVibGljIEds
b2JhbEV4ZWN1dGFibGUgewogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgOiAxOwogICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogCi0g
ICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fZXZhbENvZGVCbG9j
azsKLSAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRFdmFsQ29kZUJsb2NrPiBtX3VubGlua2VkRXZh
bENvZGVCbG9jazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplY3RNYXA+IG1fdGVt
cGxhdGVPYmplY3RNYXA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBkODFhYzYwNmY3NGQ4NTJiOGRiZWU5
M2RkZDU2NzY1OGJlMDc0OTk0Li5jN2VlMTQ5MDg3Zjc4ZjhiYzg4MTE4ZGE3YmI0MDkzOTE4YTli
NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKQEAgLTI0LDEwICsyNCwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKIAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRnVuY3Rp
b25FeGVjdXRhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uT3ZlcnJpZGVzLmgiCisj
aW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTU1LDI3ICs1OCwzMyBAQCB2b2lkIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAKIEZ1bmN0aW9uQ29kZUJsb2NrKiBG
dW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKIHsKLSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBlZGdlOworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICBpZiAoa2luZCA9PSBDb2RlRm9y
Q2FsbCkKLSAgICAgICAgZWRnZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC5nZXQoKTsKKyAgICAgICAg
Y29kZUJsb2NrID0gY29kZUJsb2NrRm9yQ2FsbCgpOwogICAgIGVsc2UgewogICAgICAgICBSRUxF
QVNFX0FTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgICAgICBlZGdlID0gbV9j
b2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCk7CisgICAgICAgIGNvZGVCbG9jayA9IGNvZGVCbG9j
a0ZvckNvbnN0cnVjdCgpOwogICAgIH0KLSAgICBpZiAoIWVkZ2UpCisgICAgaWYgKCFjb2RlQmxv
Y2spCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5j
dGlvbkNvZGVCbG9jayo+KGVkZ2UtPmNvZGVCbG9jaygpLT5iYXNlbGluZUFsdGVybmF0aXZlKCkp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KGNvZGVCbG9jay0+
YmFzZWxpbmVBbHRlcm5hdGl2ZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4K
K3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRLZWVwSW5Db25zdHJhaW50U2V0KFZpc2l0b3ImIHZp
c2l0b3IsIENvZGVCbG9jayogY29kZUJsb2NrRm9yQ2FsbCwgQ29kZUJsb2NrKiBjb2RlQmxvY2tG
b3JDb25zdHJ1Y3QpCit7CisgICAgLy8gSWYgZWl0aGVyIG9mIENvZGVCbG9ja3MgaXMgbm90IG1h
cmtlZCB5ZXQsIHdlIHdpbGwgcnVuIG91dHB1dC1jb25zdHJhaW50cy4KKyAgICByZXR1cm4gKGNv
ZGVCbG9ja0ZvckNhbGwgJiYgIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrRm9yQ2FsbCkpIHx8
IChjb2RlQmxvY2tGb3JDb25zdHJ1Y3QgJiYgIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrRm9y
Q29uc3RydWN0KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CiB2b2lkIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2
aXNpdG9yKQogeworICAgIFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsKICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV90b3BMZXZlbEV4ZWN1dGFibGUpOwotICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ2FsbCk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fdW5saW5rZWRFeGVjdXRhYmxlKTsKICAgICBpZiAoUmFyZURhdGEqIHJhcmVE
YXRhID0gdGhpc09iamVjdC0+bV9yYXJlRGF0YS5nZXQoKSkgewogICAgICAgICB2aXNpdG9yLmFw
cGVuZChyYXJlRGF0YS0+bV9jYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmVJRCk7CkBAIC04NiwxMCAr
OTUsNDMgQEAgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2Vs
bCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZChlbnRyeS52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBTaW5jZSBGdW5jdGlv
bkV4ZWN1dGFibGUncyBmaW5hbGl6ZXIgYWx3YXlzIG5lZWRzIHRvIGJlIHJ1biwgd2UgZG8gbm90
IHRyYWNrIEZ1bmN0aW9uRXhlY3V0YWJsZSB2aWEgZmluYWxpemVyU2V0LgorICAgIGF1dG8qIGNv
ZGVCbG9ja0ZvckNhbGwgPSB0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCk7Cisg
ICAgaWYgKGNvZGVCbG9ja0ZvckNhbGwpCisgICAgICAgIHZpc2l0Q29kZUJsb2NrRWRnZSh2aXNp
dG9yLCBjb2RlQmxvY2tGb3JDYWxsKTsKKyAgICBhdXRvKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3Qg
PSB0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKTsKKyAgICBpZiAoY29k
ZUJsb2NrRm9yQ29uc3RydWN0KQorICAgICAgICB2aXNpdENvZGVCbG9ja0VkZ2UodmlzaXRvciwg
Y29kZUJsb2NrRm9yQ29uc3RydWN0KTsKKworICAgIGlmIChzaG91bGRLZWVwSW5Db25zdHJhaW50
U2V0KHZpc2l0b3IsIGNvZGVCbG9ja0ZvckNhbGwsIGNvZGVCbG9ja0ZvckNvbnN0cnVjdCkpCisg
ICAgICAgIHZtLmhlYXAuZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQub3V0cHV0Q29uc3Ry
YWludHNTZXQuYWRkKHRoaXNPYmplY3QpOwogfQogCiBERUZJTkVfVklTSVRfQ0hJTERSRU4oRnVu
Y3Rpb25FeGVjdXRhYmxlKTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgRnVu
Y3Rpb25FeGVjdXRhYmxlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbChKU0NlbGwqIGNlbGws
IFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgVk0mIHZtID0gdmlzaXRvci52bSgpOworICAgIGF1
dG8qIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CisgICAg
YXV0byogY29kZUJsb2NrRm9yQ2FsbCA9IGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ2FsbC5n
ZXQoKTsKKyAgICBpZiAoY29kZUJsb2NrRm9yQ2FsbCkgeworICAgICAgICBpZiAoIXZpc2l0b3Iu
aXNNYXJrZWQoY29kZUJsb2NrRm9yQ2FsbCkpCisgICAgICAgICAgICBydW5Db25zdHJhaW50KE5v
TG9ja2luZ05lY2Vzc2FyeSwgdmlzaXRvciwgY29kZUJsb2NrRm9yQ2FsbCk7CisgICAgfQorICAg
IGF1dG8qIGNvZGVCbG9ja0ZvckNvbnN0cnVjdCA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvckNv
bnN0cnVjdCgpOworICAgIGlmIChjb2RlQmxvY2tGb3JDb25zdHJ1Y3QpIHsKKyAgICAgICAgaWYg
KCF2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9ja0ZvckNvbnN0cnVjdCkpCisgICAgICAgICAgICBy
dW5Db25zdHJhaW50KE5vTG9ja2luZ05lY2Vzc2FyeSwgdmlzaXRvciwgY29kZUJsb2NrRm9yQ29u
c3RydWN0KTsKKyAgICB9CisKKyAgICBpZiAoIXNob3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQodmlz
aXRvciwgY29kZUJsb2NrRm9yQ2FsbCwgY29kZUJsb2NrRm9yQ29uc3RydWN0KSkKKyAgICAgICAg
dm0uaGVhcC5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldC5vdXRwdXRDb25zdHJhaW50c1Nl
dC5yZW1vdmUoZXhlY3V0YWJsZSk7Cit9CisKK0RFRklORV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlO
VFMoRnVuY3Rpb25FeGVjdXRhYmxlKTsKKwogRnVuY3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgCiAg
ICAgSlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIHN0ZDo6b3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaApp
bmRleCAwYTkxMmFlNWVmNzJkMDE1OGViZDVjZWRjZTU2MjRiNjE1MTkyYWJlLi4zN2UwYzVkYjYx
YWNhNjQyZTVlZmRmNjg2MTJmMDIzMWM0NThmZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMjUsNyArMjUsNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0YWJsZS5oIgog
I2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKQEAgLTY5LDM0ICs2OCwzMSBAQCBjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgLy8gUmV0
dXJucyBlaXRoZXIgY2FsbCBvciBjb25zdHJ1Y3QgYnl0ZWNvZGUuIFRoaXMgY2FuIGJlIGFwcHJv
cHJpYXRlCiAgICAgLy8gZm9yIGFuc3dlcmluZyBxdWVzdGlvbnMgdGhhdCB0aGF0IGRvbid0IHZh
cnkgYmV0d2VlbiBjYWxsIGFuZCBjb25zdHJ1Y3QgLS0KICAgICAvLyBmb3IgZXhhbXBsZSwgYXJn
dW1lbnRzUmVnaXN0ZXIoKS4KLSAgICBGdW5jdGlvbkNvZGVCbG9jayogZWl0aGVyQ29kZUJsb2Nr
KCkKKyAgICBGdW5jdGlvbkNvZGVCbG9jayogZWl0aGVyQ29kZUJsb2NrKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2U7Ci0gICAgICAgIGlmICht
X2NvZGVCbG9ja0ZvckNhbGwpCi0gICAgICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tGb3JDYWxs
LmdldCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tGb3JD
b25zdHJ1Y3QuZ2V0KCk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2Rl
QmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAoZWRnZSkpOworICAgICAg
ICBpZiAoYXV0byogcmVzdWx0ID0gY29kZUJsb2NrRm9yQ2FsbCgpKQorICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIGNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpOwogICAg
IH0KICAgICAgICAgCiAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuICEhbV9jb2RlQmxvY2tGb3JDYWxsOworICAgICAgICByZXR1cm4gISFj
b2RlQmxvY2tGb3JDYWxsKCk7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVC
bG9ja0ZvckNhbGwoKQorICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDYWxsKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxv
Y2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9jb2RlQmxvY2tGb3JDYWxs
LmdldCgpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sq
PihtX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCkpOwogICAgIH0KIAogICAgIGJvb2wgaXNHZW5lcmF0
ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEhbV9jb2RlQmxv
Y2tGb3JDb25zdHJ1Y3Q7CisgICAgICAgIHJldHVybiAhIWNvZGVCbG9ja0ZvckNvbnN0cnVjdCgp
OwogICAgIH0KIAotICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3Qo
KQorICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnVud3JhcChtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5n
ZXQoKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4o
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCkpOwogICAgIH0KICAgICAgICAgCiAgICAgYm9v
bCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0xMjIsNiAr
MTE4LDggQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4
ZWN1dGFibGUgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAg
ICAgfQogCisgICAgRnVuY3Rpb25Db2RlQmxvY2sqIHJlcGxhY2VDb2RlQmxvY2tXaXRoKFZNJiwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCwgQ29kZUJsb2NrKik7CisKICAgICBSZWZQdHI8VHlwZVNl
dD4gcmV0dXJuU3RhdGVtZW50VHlwZVNldCgpIAogICAgIHsKICAgICAgICAgUmFyZURhdGEmIHJh
cmVEYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKQEAgLTE2Miw2ICsxNjAsNyBAQCBjbGFzcyBGdW5j
dGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgU291
cmNlQ29kZSBjbGFzc1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxl
LT5jbGFzc1NvdXJjZSgpOyB9CiAKICAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOworICAgIERF
Q0xBUkVfVklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG8pCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKQEAgLTMzMSw4ICszMzAsOCBAQCBjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwogICAgIFdyaXRlQmFycmllcjxTY3JpcHRFeGVj
dXRhYmxlPiBtX3RvcExldmVsRXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU+IG1fdW5saW5rZWRFeGVjdXRhYmxlOwotICAgIFdyaXRlQmFycmll
cjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX2NvZGVCbG9ja0ZvckNhbGw7Ci0gICAgV3Jp
dGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0OworICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKKyAg
ICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKICAgICBJ
bmZlcnJlZFZhbHVlPEpTRnVuY3Rpb24+IG1fc2luZ2xldG9uOwogICAgIEJveDxJbmxpbmVXYXRj
aHBvaW50U2V0PiBtX3BvbHlQcm90b1dhdGNocG9pbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oCmlu
ZGV4IGM5YTBiMTIyNDA0MzMyOTcxYTE2YzI4YTZkMTVmNTRlZjNmNTBkOGMuLjVlMWZiN2ZjMmVh
NDMyYjliN2JiYzZjNGRkMDczMTFkOWVkMWE1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgKQEAgLTI3
LDE1ICsyNywzMiBAQAogCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVk
ZSAiSW5mZXJyZWRWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRhYmxlSW5s
aW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogaW5saW5lIHZvaWQgRnVuY3Rpb25FeGVjdXRh
YmxlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCiB7CiAgICAgbV9zaW5nbGV0b24u
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkodm0pOworICAgIGZpbmFsaXplQ29kZUJsb2NrRWRnZSh2
bSwgbV9jb2RlQmxvY2tGb3JDYWxsKTsKKyAgICBmaW5hbGl6ZUNvZGVCbG9ja0VkZ2Uodm0sIG1f
Y29kZUJsb2NrRm9yQ29uc3RydWN0KTsKKyAgICB2bS5oZWFwLmZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlQW5kU2V0Lm91dHB1dENvbnN0cmFpbnRzU2V0LnJlbW92ZSh0aGlzKTsKIH0KIAotSlNTdHJp
bmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK2lubGluZSBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpyZXBs
YWNlQ29kZUJsb2NrV2l0aChWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgQ29k
ZUJsb2NrKiBuZXdDb2RlQmxvY2spCit7CisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsK
KyAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIG9sZENvZGVCbG9jayA9IGNvZGVCbG9ja0ZvckNh
bGwoKTsKKyAgICAgICAgbV9jb2RlQmxvY2tGb3JDYWxsLnNldCh2bSwgdGhpcywgbmV3Q29kZUJs
b2NrKTsKKyAgICAgICAgcmV0dXJuIG9sZENvZGVCbG9jazsKKyAgICB9CisgICAgQVNTRVJUKGtp
bmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgRnVuY3Rpb25Db2RlQmxvY2sqIG9sZENvZGVC
bG9jayA9IGNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpOworICAgIG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0LnNldCh2bSwgdGhpcywgbmV3Q29kZUJsb2NrKTsKKyAgICByZXR1cm4gb2xkQ29kZUJsb2Nr
OworfQorCitpbmxpbmUgSlNTdHJpbmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBSYXJlRGF0YSYgcmFyZURhdGEgPSBl
bnN1cmVSYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURhdGEubV9hc1N0cmluZykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5jcHAKaW5kZXgg
NzVlODRiMzhmZjcyN2IzMmM4ZWIwMDExNmEwYjFkMGFkODQwYmZlZC4uZjUzZmQyYjAwYjBiNGY0
OTQ4NmJiYjA3MTYyNDRmYTYxYjMwNjgyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5jcHAKQEAgLTI2LDEwICsyNiw2MiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdsb2JhbEV4ZWN1dGFibGUuaCIKIAorI2luY2x1
ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGFibGVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBj
b25zdCBDbGFzc0luZm8gR2xvYmFsRXhlY3V0YWJsZTo6c19pbmZvID0geyAiR2xvYmFsRXhlY3V0
YWJsZSJfcywgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShHbG9iYWxFeGVjdXRhYmxlKSB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgor
dm9pZCBHbG9iYWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogZXhlY3V0YWJsZSA9IGpzQ2FzdDxHbG9iYWxF
eGVjdXRhYmxlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhleGVjdXRh
YmxlLCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oZXhlY3V0YWJsZSwgdmlzaXRv
cik7CisgICAgdmlzaXRvci5hcHBlbmQoZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jayk7
CisKKyAgICBpZiAoYXV0byogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+Y29kZUJsb2NrKCkpIHsK
KyAgICAgICAgLy8gSWYgdGhlIENvZGVCbG9ja3MgaXMgbm90IG1hcmtlZCB5ZXQsIHdlIHdpbGwg
cnVuIG91dHB1dC1jb25zdHJhaW50cy4KKyAgICAgICAgLy8gV2UgbWFpbnRhaW4gdGhlIGludmFy
aWFudCB0aGF0LCB3aGVuZXZlciB3ZSBzZWUgdW5tYXJrZWQgQ29kZUJsb2NrLCB0aGVuIHdlIG11
c3QgcnVuIGZpbmFsaXplci4KKyAgICAgICAgLy8gQW5kIHdoZW5ldmVyIHdlIHNldCBhIGJpdCBv
biBvdXRwdXRDb25zdHJhaW50c1NldCwgd2UgbXVzdCBhbHJlYWR5IHNldCBhIGJpdCBpbiBmaW5h
bGl6ZXJTZXQuCisgICAgICAgIHZpc2l0Q29kZUJsb2NrRWRnZSh2aXNpdG9yLCBjb2RlQmxvY2sp
OworICAgICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrKSkgeworICAgICAgICAg
ICAgSGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0OjpmaW5hbGl6ZXJTZXRGb3IoKmV4
ZWN1dGFibGUtPnN1YnNwYWNlKCkpLmFkZChleGVjdXRhYmxlKTsKKyAgICAgICAgICAgIEhlYXA6
OlNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6b3V0cHV0Q29uc3RyYWludHNTZXRGb3IoKmV4
ZWN1dGFibGUtPnN1YnNwYWNlKCkpLmFkZChleGVjdXRhYmxlKTsKKyAgICAgICAgfQorICAgIH0K
K30KKworREVGSU5FX1ZJU0lUX0NISUxEUkVOKEdsb2JhbEV4ZWN1dGFibGUpOworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBWaXNpdG9yPgordm9pZCBHbG9iYWxFeGVjdXRhYmxlOjp2aXNpdE91dHB1dENv
bnN0cmFpbnRzSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0
byogZXhlY3V0YWJsZSA9IGpzQ2FzdDxHbG9iYWxFeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgaWYg
KENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+Y29kZUJsb2NrKCkpIHsKKyAgICAg
ICAgaWYgKCF2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCisgICAgICAgICAgICBydW5Db25z
dHJhaW50KE5vTG9ja2luZ05lY2Vzc2FyeSwgdmlzaXRvciwgY29kZUJsb2NrKTsKKyAgICAgICAg
aWYgKHZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrKSkKKyAgICAgICAgICAgIEhlYXA6OlNjcmlw
dEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6b3V0cHV0Q29uc3RyYWludHNTZXRGb3IoKmV4ZWN1dGFi
bGUtPnN1YnNwYWNlKCkpLnJlbW92ZShleGVjdXRhYmxlKTsKKyAgICB9Cit9CisKK0RFRklORV9W
SVNJVF9PVVRQVVRfQ09OU1RSQUlOVFMoR2xvYmFsRXhlY3V0YWJsZSk7CisKK0NvZGVCbG9jayog
R2xvYmFsRXhlY3V0YWJsZTo6cmVwbGFjZUNvZGVCbG9ja1dpdGgoVk0mIHZtLCBDb2RlQmxvY2sq
IG5ld0NvZGVCbG9jaykKK3sKKyAgICBDb2RlQmxvY2sqIG9sZENvZGVCbG9jayA9IGNvZGVCbG9j
aygpOworICAgIG1fY29kZUJsb2NrLnNldCh2bSwgdGhpcywgbmV3Q29kZUJsb2NrKTsKKyAgICBy
ZXR1cm4gb2xkQ29kZUJsb2NrOworfQorCit2b2lkIEdsb2JhbEV4ZWN1dGFibGU6OmZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sKKyAgICBmaW5hbGl6ZUNvZGVCbG9ja0VkZ2Uodm0s
IG1fY29kZUJsb2NrKTsKKyAgICBIZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6Om91
dHB1dENvbnN0cmFpbnRzU2V0Rm9yKCpzdWJzcGFjZSgpKS5yZW1vdmUodGhpcyk7CisgICAgSGVh
cDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0OjpmaW5hbGl6ZXJTZXRGb3IoKnN1YnNwYWNl
KCkpLnJlbW92ZSh0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmgKaW5kZXggOTI3NGM5Y2Qz
ZDZkMjEyYmE4YjY1NmJhM2M4MjAzMDUxNTU2MGI1NC4uM2QxZGU5ZTBhY2Y1ODZiNTEyYzFmY2Zl
MzdmYmQ5ZTFiZjE0Yzk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2xvYmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dsb2JhbEV4ZWN1dGFibGUuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDgsMTIgKzQ3LDMyIEBAIGNsYXNz
IEdsb2JhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIEFT
U0VSVChlbmRDb2x1bW4gIT0gVUlOVF9NQVgpOwogICAgIH0KIAorICAgIERFQ0xBUkVfVklTSVRf
Q0hJTERSRU47CisgICAgREVDTEFSRV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlOVFM7CisKKyAgICB2
b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJik7CisKIHByb3RlY3RlZDoKKyAgICBmcmll
bmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKICAgICBHbG9iYWxFeGVjdXRhYmxlKFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGJvb2wg
aXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUs
IGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5j
dGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgSW50cmluc2ljIGludHJpbnNp
YykKICAgICAgICAgOiBCYXNlKHN0cnVjdHVyZSwgdm0sIHNvdXJjZUNvZGUsIGlzSW5TdHJpY3RD
b250ZXh0ID8gU3RyaWN0TW9kZUxleGljYWxGZWF0dXJlIDogTm9MZXhpY2FsRmVhdHVyZXMsIGRl
cml2ZWRDb250ZXh0VHlwZSwgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGlu
YXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgaW50cmluc2ljKQogICAgIHsKICAgICB9CiAK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9jb2RlQmxvY2suZ2V0KCk7CisgICAgfQorCisgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3VubGlua2VkQ29k
ZUJsb2NrLmdldCgpOworICAgIH0KKworICAgIENvZGVCbG9jayogcmVwbGFjZUNvZGVCbG9ja1dp
dGgoVk0mLCBDb2RlQmxvY2sqKTsKKworICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29k
ZUJsb2NrOworICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZENvZGVCbG9jaz4gbV91bmxpbmtlZENv
ZGVCbG9jazsKICAgICBpbnQgbV9sYXN0TGluZSB7IC0xIH07CiAgICAgdW5zaWduZWQgbV9lbmRD
b2x1bW4geyBVSU5UX01BWCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggNWJjNTg4MmIwMDJj
Mjg1NjY1MzUyNmM0MDRkZDljZjE1NDQ1NjVjNi4uZTllMWRlMzVhMDViM2I0YzMzODY3N2Y1YzU2
ODMxOTIzOGY4ODljNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgaW5saW5l
IEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZUlt
cGwoSlNHbG9iYWxPYmplY3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
ZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxDb2RlQmxvY2suc2V0KHZtLCBleGVjdXRhYmxlLCB1
bmxpbmtlZEV2YWxDb2RlKTsKKyAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkQ29kZUJsb2NrLnNl
dCh2bSwgZXhlY3V0YWJsZSwgdW5saW5rZWRFdmFsQ29kZSk7CiAKICAgICByZXR1cm4gZXhlY3V0
YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
aW5kZXggYTM3NmFmNWVlYTBkZTZiNTE3MGM0ZmI0NDczNzMwZDI1ODMzMWM1Mi4uYzliNzE2MDcw
YmJmZDBhYTBiNGI3Y2M0ZWUyYWI4NzViZTlmNTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJD
YXRjaFNjb3BlLmgiCiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJD
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGFiN2JlY2Q5YzY3YTA4YzJmZTI1OGY3ZGI5
MTA1NGYyYmFkNzlkMTEuLjA4MTBlMWQyZDE2NTMwZDBkODYyNTRkMDBjMzQ3NWY2ZTFhNDU4YzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3Jk
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5j
cHAKQEAgLTk2LDcgKzk2LDcgQEAgU3luY2hyb25vdXNuZXNzIEpTTW9kdWxlUmVjb3JkOjpsaW5r
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc2NyaXAKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBTeW5jaHJvbm91c25lc3M6OlN5bmMpOwogICAgIG1fbW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUuc2V0KHZtLCB0aGlzLCBleGVjdXRhYmxlKTsKIAotICAgIHJldHVy
biBleGVjdXRhYmxlLT51bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKS0+aXNBc3luYygp
ID8gU3luY2hyb25vdXNuZXNzOjpBc3luYyA6IFN5bmNocm9ub3VzbmVzczo6U3luYzsKKyAgICBy
ZXR1cm4gZXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBc3luYygpID8gU3luY2hy
b25vdXNuZXNzOjpBc3luYyA6IFN5bmNocm9ub3VzbmVzczo6U3luYzsKIH0KIAogdm9pZCBKU01v
ZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBKU01vZHVs
ZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgTW9kdWwKICAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAgMTYtYS1pdi4KICAg
ICAvLyBJbml0aWFsaXplIGhlYXAgYWxsb2NhdGVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KICAg
ICAvLyBUaGV5IGNhbiBiZSBjYWxsZWQgYmVmb3JlIHRoZSBib2R5IG9mIHRoZSBtb2R1bGUgaXMg
ZXhlY3V0ZWQgdW5kZXIgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgotICAgIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZS0+dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCk7CisgICAgVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlLT51bmxpbmtlZENvZGVCbG9jaygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBudW1i
ZXJPZkZ1bmN0aW9ucyA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMo
KTsgaSA8IG51bWJlck9mRnVuY3Rpb25zOyArK2kpIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxv
Y2stPmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5
bWJvbFRhYmxlLT5nZXQodW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKS5pbXBsKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUuY3BwCmluZGV4IDI0N2ZhYTY1ZWJjZTZlYTM5NDc2Y2MyNmVmNGQyZTUy
NmQ1OWU1NjguLjgxMmMxYzc1YTU1MmQ1YjZjOTJlY2Q2M2U0NDk1MTUxZDY0YmE3NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8K
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suc2V0KGdsb2JhbE9iamVjdC0+dm0oKSwgZXhlY3V0
YWJsZSwgdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZSk7CisgICAgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZENvZGVCbG9jay5zZXQoZ2xvYmFsT2JqZWN0LT52bSgpLCBleGVjdXRhYmxlLCB1bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlKTsKIAogICAgIGV4ZWN1dGFibGUtPm1fbW9kdWxlRW52aXJvbm1l
bnRTeW1ib2xUYWJsZS5zZXQoZ2xvYmFsT2JqZWN0LT52bSgpLCBleGVjdXRhYmxlLCBqc0Nhc3Q8
U3ltYm9sVGFibGUqPih1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlLT5jb25zdGFudFJlZ2lzdGVy
KFZpcnR1YWxSZWdpc3Rlcih1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlLT5tb2R1bGVFbnZpcm9u
bWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldCgpKSkuZ2V0KCkpLT5jbG9uZVNj
b3BlUGFydChnbG9iYWxPYmplY3QtPnZtKCkpKTsKIApAQCAtODUsOSArODUsNyBAQCB2b2lkIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZp
c2l0b3ImIHZpc2l0b3IpCiAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPihjZWxsKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7CiAgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKTsKLSAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2spOwogICAgIGlmIChU
ZW1wbGF0ZU9iamVjdE1hcCogbWFwID0gdGhpc09iamVjdC0+bV90ZW1wbGF0ZU9iamVjdE1hcC5n
ZXQoKSkgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdGhpc09iamVjdC0+Y2VsbExvY2soKSB9
OwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogKm1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IDky
NjM1YjMyMjFiMmM1NDE0YWNhNzZkMThiOThlOGIxYWM4ZGVhMTUuLjM5YzJhYTk0YjJjZTQ5NzBi
NzVjZTgwYWJjOTUyOWM2Mjg5MzlmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtMjUsNyArMjUsNiBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Uu
aCIKICNpbmNsdWRlICJHbG9iYWxFeGVjdXRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NDYsOSArNDUsMTQgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogCi0gICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrKCkKKyAgICBNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZTo6dW53cmFwKG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSkpOworICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihCYXNlOjpjb2Rl
QmxvY2soKSk7CisgICAgfQorCisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1
bmxpbmtlZENvZGVCbG9jaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9j
YXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KEJhc2U6OnVubGlua2VkQ29kZUJs
b2NrKCkpOwogICAgIH0KIAogICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKQEAg
LTYzLDcgKzY3LDYgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygp
IHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAgICAg
Ym9vbCBpc0FzeW5jKCkgY29uc3QgeyByZXR1cm4gZmVhdHVyZXMoKSAmIEF3YWl0RmVhdHVyZTsg
fQogCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKSB7IHJl
dHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7IH0KQEAgLTc4LDkgKzgx
LDcgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgR2xvYmFs
RXhlY3V0YWJsZSB7CiAKICAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOwogCi0gICAgV3JpdGVC
YXJyaWVyPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4gbV91bmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2s7CiAgICAgV3JpdGVCYXJyaWVyPFN5bWJvbFRhYmxlPiBtX21vZHVsZUVu
dmlyb25tZW50U3ltYm9sVGFibGU7Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U+IG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VGVtcGxhdGVPYmplY3RNYXA+IG1fdGVtcGxhdGVPYmplY3RNYXA7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKaW5kZXgg
NzMyOWZlMjcwMTg2ODRhYjA1YzZhNDc3NmZhZDI5NmU1ODI4OWQ2Yy4uY2U4MjQyZjk4MzVmYjYz
Y2FiZmExNDc3ZGU5YTIyM2ZiMGFmOTgxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcApAQCAtMTUwLDggKzE1MCw3IEBAIEpT
T2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAgfQogICAgIH0KIAotCi0gICAgbV91bmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2suc2V0KHZtLCB0aGlzLCB1bmxpbmtlZENvZGVCbG9jayk7CisgICAg
bV91bmxpbmtlZENvZGVCbG9jay5zZXQodm0sIHRoaXMsIHVubGlua2VkQ29kZUJsb2NrKTsKIAog
ICAgIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyIG9wdGltaXplcih2bSwgZ2xvYmFsT2JqZWN0
KTsKIApAQCAtMjE2LDggKzIxNSw2IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hp
bGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICBQcm9ncmFtRXhl
Y3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKTsKLSAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb2dyYW1Db2RlQmxvY2spOwogICAgIGlmIChUZW1wbGF0
ZU9iamVjdE1hcCogbWFwID0gdGhpc09iamVjdC0+bV90ZW1wbGF0ZU9iamVjdE1hcC5nZXQoKSkg
ewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdGhpc09iamVjdC0+Y2VsbExvY2soKSB9OwogICAg
ICAgICBmb3IgKGF1dG8mIGVudHJ5IDogKm1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IDUxMzQ5OTAyMDQwNzgxM2M1OWUz
Mjg4YTE4ZGYyOWJjMTExYmZlYzIuLjQzOTRlN2ZmY2I2OGIyMTUxN2M4OWNjYWIyOGE4MzU2NWY5
MmFjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4
ZWN1dGFibGUuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRlICJHbG9iYWxFeGVjdXRhYmxl
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTYsOSArNTUsMTQgQEAgY2xhc3MgUHJvZ3JhbUV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2Nr
KCkKKyAgICBQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4oRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZTo6dW53cmFwKG1fcHJvZ3JhbUNvZGVCbG9jay5nZXQoKSkpOworICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PFByb2dyYW1Db2RlQmxvY2sqPihCYXNlOjpjb2RlQmxvY2soKSk7
CisgICAgfQorCisgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
aygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jayo+KEJhc2U6OnVubGlua2VkQ29kZUJsb2NrKCkpOwogICAgIH0KIAogICAg
IFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKQEAgLTgzLDggKzg3LDYgQEAgY2xhc3Mg
UHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAKICAg
ICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOwogCi0gICAgV3JpdGVCYXJyaWVyPFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jaz4gbV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7Ci0gICAgV3JpdGVCYXJy
aWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fcHJvZ3JhbUNvZGVCbG9jazsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplY3RNYXA+IG1fdGVtcGxhdGVPYmplY3RNYXA7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFi
bGUuY3BwCmluZGV4IGM2YTllYWI2NzE0Y2U0MmM0MTA4N2JkYjA4ZmM5MjE3NGFjOGVjYmYuLjlj
MmViMzdmYTNkZTk5MzE0MzIxZmE5ZWFjZmFjNmVjMDA5ZTFhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFdmFsQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKKyNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1
dGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR2xvYmFsRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUg
Iklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklULmgiCkBAIC04NiwyMCArODcsMjAg
QEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpjbGVhckNvZGUoSXNvQ2VsbFNldCYgY2xlYXJhYmxl
Q29kZVNldCkKICAgICB9CiAgICAgY2FzZSBFdmFsRXhlY3V0YWJsZVR5cGU6IHsKICAgICAgICAg
RXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+
KHRoaXMpOwotICAgICAgICBleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2suY2xlYXIoKTsKLSAg
ICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxDb2RlQmxvY2suY2xlYXIoKTsKKyAgICAg
ICAgZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgZXhlY3V0YWJsZS0+
bV91bmxpbmtlZENvZGVCbG9jay5jbGVhcigpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU6IHsKICAgICAgICAgUHJvZ3JhbUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOwotICAg
ICAgICBleGVjdXRhYmxlLT5tX3Byb2dyYW1Db2RlQmxvY2suY2xlYXIoKTsKLSAgICAgICAgZXhl
Y3V0YWJsZS0+bV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgZXhl
Y3V0YWJsZS0+bV9jb2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZENvZGVCbG9jay5jbGVhcigpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGU6IHsKICAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+
KHRoaXMpOwotICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2suY2xl
YXIoKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2suY2xlYXIoKTsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2suY2xlYXIoKTsKKyAg
ICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jay5jbGVhcigpOwogICAgICAgICBl
eGVjdXRhYmxlLT5tX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuY2xlYXIoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpAQCAtMTA4LDcgKzEwOSw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJs
ZTo6Y2xlYXJDb2RlKElzb0NlbGxTZXQmIGNsZWFyYWJsZUNvZGVTZXQpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAotICAgIEFTU0VSVCgmSGVhcDo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3Bh
Y2UoKSkgPT0gJmNsZWFyYWJsZUNvZGVTZXQpOworICAgIEFTU0VSVCgmSGVhcDo6U2NyaXB0RXhl
Y3V0YWJsZVNwYWNlQW5kU2V0OjpjbGVhcmFibGVDb2RlU2V0Rm9yKCpzdWJzcGFjZSgpKSA9PSAm
Y2xlYXJhYmxlQ29kZVNldCk7CiAgICAgY2xlYXJhYmxlQ29kZVNldC5yZW1vdmUodGhpcyk7CiB9
CiAKQEAgLTEzMSw4ICsxMzIsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2Rl
KFZNJiB2bSwgQ29kZUJsb2NrKiBnZW5lcmljQ29kZUJsb2NrLCBDb2RlVHlwZQogICAgICAgICAK
ICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOwogICAgICAgICAKLSAgICAgICAg
b2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZUFuZFVu
d3JhcChleGVjdXRhYmxlLT5tX3Byb2dyYW1Db2RlQmxvY2suZ2V0KCkpOwotICAgICAgICBleGVj
dXRhYmxlLT5tX3Byb2dyYW1Db2RlQmxvY2suc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5kQWN0aXZhdGUoY29kZUJsb2NrKSk7CisgICAgICAg
IG9sZENvZGVCbG9jayA9IGV4ZWN1dGFibGUtPnJlcGxhY2VDb2RlQmxvY2tXaXRoKHZtLCBjb2Rl
QmxvY2spOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE0Miw4ICsxNDIsNyBAQCB2b2lk
IFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2bSwgQ29kZUJsb2NrKiBnZW5lcmlj
Q29kZUJsb2NrLCBDb2RlVHlwZQogCiAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDYWxs
KTsKIAotICAgICAgICBvbGRDb2RlQmxvY2sgPSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpk
ZWFjdGl2YXRlQW5kVW53cmFwKGV4ZWN1dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5n
ZXQoKSk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5zZXRN
YXlCZU51bGwodm0sIHRoaXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3Rp
dmF0ZShjb2RlQmxvY2spKTsKKyAgICAgICAgb2xkQ29kZUJsb2NrID0gZXhlY3V0YWJsZS0+cmVw
bGFjZUNvZGVCbG9ja1dpdGgodm0sIGNvZGVCbG9jayk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApAQCAtMTUzLDggKzE1Miw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUo
Vk0mIHZtLCBDb2RlQmxvY2sqIGdlbmVyaWNDb2RlQmxvY2ssIENvZGVUeXBlCiAgICAgICAgIAog
ICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CiAgICAgICAgIAotICAgICAgICBv
bGRDb2RlQmxvY2sgPSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFjdGl2YXRlQW5kVW53
cmFwKGV4ZWN1dGFibGUtPm1fZXZhbENvZGVCbG9jay5nZXQoKSk7Ci0gICAgICAgIGV4ZWN1dGFi
bGUtPm1fZXZhbENvZGVCbG9jay5zZXRNYXlCZU51bGwodm0sIHRoaXMsIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3RpdmF0ZShjb2RlQmxvY2spKTsKKyAgICAgICAgb2xkQ29k
ZUJsb2NrID0gZXhlY3V0YWJsZS0+cmVwbGFjZUNvZGVCbG9ja1dpdGgodm0sIGNvZGVCbG9jayk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0xNjIsMTYgKzE2MCw3IEBAIHZv
aWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUoVk0mIHZtLCBDb2RlQmxvY2sqIGdlbmVy
aWNDb2RlQmxvY2ssIENvZGVUeXBlCiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzKTsKICAgICAgICAgRnVuY3Rp
b25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4o
Z2VuZXJpY0NvZGVCbG9jayk7CiAgICAgICAgIAotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAg
ICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAgICAgICAgIG9sZENvZGVCbG9jayA9IEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGVBbmRVbndyYXAoZXhlY3V0YWJsZS0+bV9j
b2RlQmxvY2tGb3JDYWxsLmdldCgpKTsKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPm1fY29kZUJs
b2NrRm9yQ2FsbC5zZXRNYXlCZU51bGwodm0sIHRoaXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2U6OndyYXBBbmRBY3RpdmF0ZShjb2RlQmxvY2spKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0gICAgICAgICAgICBvbGRDb2RlQmxvY2sgPSBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFjdGl2YXRlQW5kVW53cmFwKGV4ZWN1dGFibGUt
Pm1fY29kZUJsb2NrRm9yQ29uc3RydWN0LmdldCgpKTsKLSAgICAgICAgICAgIGV4ZWN1dGFibGUt
Pm1fY29kZUJsb2NrRm9yQ29uc3RydWN0LnNldE1heUJlTnVsbCh2bSwgdGhpcywgRXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZTo6d3JhcEFuZEFjdGl2YXRlKGNvZGVCbG9jaykpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgb2xkQ29kZUJsb2NrID0gZXhlY3V0YWJsZS0+
cmVwbGFjZUNvZGVCbG9ja1dpdGgodm0sIGtpbmQsIGNvZGVCbG9jayk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICB9CkBAIC0xODcsNyArMTc2LDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxl
OjppbnN0YWxsQ29kZShWTSYgdm0sIENvZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9jaywgQ29kZVR5
cGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgYXV0byYgY2xlYXJhYmxlQ29kZVNldCA9
IEhlYXA6OlNwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkpOworICAgIGF1dG8mIGNsZWFy
YWJsZUNvZGVTZXQgPSBIZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6OmNsZWFyYWJs
ZUNvZGVTZXRGb3IoKnN1YnNwYWNlKCkpOwogICAgIGlmIChoYXNDbGVhcmFibGVDb2RlKHZtKSkK
ICAgICAgICAgY2xlYXJhYmxlQ29kZVNldC5hZGQodGhpcyk7CiAgICAgZWxzZQpAQCAtMjI1LDIz
ICsyMTQsMjMgQEAgYm9vbCBTY3JpcHRFeGVjdXRhYmxlOjpoYXNDbGVhcmFibGVDb2RlKFZNJiB2
bSkgY29uc3QKIAogICAgIGlmIChzdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8oKSA9PSBGdW5jdGlv
bkV4ZWN1dGFibGU6OmluZm8oKSkgewogICAgICAgICBhdXRvKiBleGVjdXRhYmxlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgRnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyk7Ci0gICAgICAgIGlmIChleGVj
dXRhYmxlLT5tX2NvZGVCbG9ja0ZvckNhbGwgfHwgZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2tGb3JD
b25zdHJ1Y3QpCisgICAgICAgIGlmIChleGVjdXRhYmxlLT5laXRoZXJDb2RlQmxvY2soKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgfSBlbHNlIGlmIChzdHJ1Y3R1cmUodm0pLT5j
bGFzc0luZm8oKSA9PSBFdmFsRXhlY3V0YWJsZTo6aW5mbygpKSB7CiAgICAgICAgIGF1dG8qIGV4
ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxjb25zdCBFdmFsRXhlY3V0YWJsZSo+KHRoaXMpOwotICAg
ICAgICBpZiAoZXhlY3V0YWJsZS0+bV9ldmFsQ29kZUJsb2NrIHx8IGV4ZWN1dGFibGUtPm1fdW5s
aW5rZWRFdmFsQ29kZUJsb2NrKQorICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2sg
fHwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jaykKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgfSBlbHNlIGlmIChzdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8oKSA9PSBQcm9n
cmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CiAgICAgICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBzdGF0
aWNfY2FzdDxjb25zdCBQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBpZiAoZXhl
Y3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrIHx8IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrKQorICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2sgfHwgZXhl
Y3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jaykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgfSBlbHNlIGlmIChzdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8oKSA9PSBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CiAgICAgICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBzdGF0
aWNfY2FzdDxjb25zdCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBp
ZiAoZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrCi0gICAgICAgICAgICB8fCBl
eGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaworICAgICAgICBpZiAo
ZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2sKKyAgICAgICAgICAgIHx8IGV4ZWN1dGFibGUtPm1fdW5s
aW5rZWRDb2RlQmxvY2sKICAgICAgICAgICAgIHx8IGV4ZWN1dGFibGUtPm1fbW9kdWxlRW52aXJv
bm1lbnRTeW1ib2xUYWJsZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI2
MSwyNSArMjUwLDI1IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2Nr
Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNGdW5jCiAgICAgaWYgKGNsYXNzSW5m
byh2bSkgPT0gRXZhbEV4ZWN1dGFibGU6OmluZm8oKSkgewogICAgICAgICBFdmFsRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KHRoaXMpOwogICAgICAgICBS
RUxFQVNFX0FTU0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIWV4ZWN1dGFibGUtPm1fZXZhbENvZGVCbG9jayk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFleGVjdXRhYmxlLT5tX2NvZGVCbG9jayk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFmdW5j
dGlvbik7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBFdmFsQ29kZUJs
b2NrOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29k
ZUJsb2NrLmdldCgpLCBzY29wZSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgRXZhbENvZGVCbG9jazo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT51
bmxpbmtlZENvZGVCbG9jaygpLCBzY29wZSkpOwogICAgIH0KIAogICAgIGlmIChjbGFzc0luZm8o
dm0pID09IFByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKICAgICAgICAgUHJvZ3JhbUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjdXRhYmxlLT5tX3Byb2dyYW1Db2RlQmxvY2spOworICAgICAgICBSRUxF
QVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2spOwogICAgICAgICBSRUxFQVNFX0FT
U0VSVCghZnVuY3Rpb24pOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
UHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3Vu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUpKTsKKyAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIFByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0
YWJsZSwgZXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2soKSwgc2NvcGUpKTsKICAgICB9CiAK
ICAgICBpZiAoY2xhc3NJbmZvKHZtKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygp
KSB7CiAgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0
PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGtpbmQgPT0gQ29kZUZvckNhbGwpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVCghZXhlY3V0YWJs
ZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWV4
ZWN1dGFibGUtPm1fY29kZUJsb2NrKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9u
KTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIE1vZHVsZVByb2dyYW1D
b2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlKSk7CisgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGUodm0sIGV4
ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrKCksIHNjb3BlKSk7CiAgICAg
fQogCiAgICAgUkVMRUFTRV9BU1NFUlQoY2xhc3NJbmZvKHZtKSA9PSBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmluZm8oKSk7CkBAIC01MzUsNCArNTI0LDYyIEBAIHVuc2lnbmVkIFNjcmlwdEV4ZWN1dGFi
bGU6OmVuZENvbHVtbigpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFZpc2l0b3I+Cit2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OnJ1bkNvbnN0cmFpbnQoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZpc2l0b3ImIHZpc2l0b3IsIENvZGVCbG9jayog
Y29kZUJsb2NrKQoreworICAgIEFTU0VSVChjb2RlQmxvY2spOworICAgIGNvZGVCbG9jay0+cHJv
cGFnYXRlVHJhbnNpdGlvbnMobG9ja2VyLCB2aXNpdG9yKTsKKyAgICBjb2RlQmxvY2stPmRldGVy
bWluZUxpdmVuZXNzKGxvY2tlciwgdmlzaXRvcik7Cit9CisKK3RlbXBsYXRlIHZvaWQgU2NyaXB0
RXhlY3V0YWJsZTo6cnVuQ29uc3RyYWludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBBYnN0
cmFjdFNsb3RWaXNpdG9yJiwgQ29kZUJsb2NrKik7Cit0ZW1wbGF0ZSB2b2lkIFNjcmlwdEV4ZWN1
dGFibGU6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU2xvdFZpc2l0
b3ImLCBDb2RlQmxvY2sqKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgU2Ny
aXB0RXhlY3V0YWJsZTo6dmlzaXRDb2RlQmxvY2tFZGdlKFZpc2l0b3ImIHZpc2l0b3IsIENvZGVC
bG9jayogY29kZUJsb2NrKQoreworICAgIEFTU0VSVChjb2RlQmxvY2spOworCisgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisKKyAgICBpZiAoY29kZUJs
b2NrLT5zaG91bGRWaXNpdFN0cm9uZ2x5KGxvY2tlciwgdmlzaXRvcikpCisgICAgICAgIHZpc2l0
b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrKTsKKworICAgIGlmIChKSVRDb2RlOjppc09w
dGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKSB7CisgICAgICAgIC8vIElmIHdlIGpl
dHRpc29uIG91cnNlbHZlcyB3ZSdsbCBpbnN0YWxsIG91ciBhbHRlcm5hdGl2ZSwgc28gbWFrZSBz
dXJlIHRoYXQgaXQKKyAgICAgICAgLy8gc3Vydml2ZXMgR0MgZXZlbiBpZiB3ZSBkb24ndC4KKyAg
ICAgICAgdmlzaXRvci5hcHBlbmQoY29kZUJsb2NrLT5tX2FsdGVybmF0aXZlKTsKKyAgICB9CisK
KyAgICAvLyBOT1RFOiBUaGVyZSBhcmUgdHdvIHNpZGVzIHRvIHRoaXMgY29uc3RyYWludCwgd2l0
aCBkaWZmZXJlbnQgcmVxdWlyZW1lbnRzIGZvciBjb3JyZWN0bmVzcy4KKyAgICAvLyBCZWNhdXNl
IGV2ZXJ5dGhpbmcgaXMgdWx0aW1hdGVseSBwcm90ZWN0ZWQgd2l0aCB3ZWFrIHJlZmVyZW5jZXMg
YW5kIGpldHRpc29uaW5nLCBpdCdzCisgICAgLy8gYWx3YXlzICJPSyIgdG8gY2xhaW0gdGhhdCBz
b21ldGhpbmcgaXMgZGVhZCBwcmVtYXR1cmVseSBhbmQgaXQncyAiT0siIHRvIGtlZXAgdGhpbmdz
IGFsaXZlLgorICAgIC8vIEJ1dCBib3RoIGNob2ljZXMgY291bGQgbGVhZCB0byBiYWQgcGVyZiAt
IGVpdGhlciByZWNvbXAgY3ljbGVzIG9yIGxlYWtzLgorICAgIC8vCisgICAgLy8gRGV0ZXJtaW5p
bmcgQ29kZUJsb2NrIGxpdmVuZXNzOiBUaGlzIHBhcnQgaXMgdGhlIG1vc3QgY29uc2VxdWVudGlh
bC4gV2Ugd2FudCB0byBrZWVwIHRoZQorICAgIC8vIG91dHB1dCBjb25zdHJhaW50IGFjdGl2ZSBz
byBsb25nIGFzIHdlIHRoaW5rIHRoYXQgd2UgbWF5IHlldCBwcm92ZSB0aGF0IHRoZSBDb2RlQmxv
Y2sgaXMKKyAgICAvLyBsaXZlIGJ1dCB3ZSBoYXZlbid0IGRvbmUgaXQgeWV0LgorICAgIC8vCisg
ICAgLy8gTWFya2luZyBTdHJ1Y3R1cmVzIGlmIHByb2ZpdGFibGU6IEl0J3MgaW1wb3J0YW50IHRo
YXQgd2UgZG8gYSBwYXNzIG9mIHRoaXMuIExvZ2ljYWxseSwgdGhpcworICAgIC8vIHNlZW1zIGxp
a2UgaXQgaXMgYSBjb25zdHJhaW50IG9mIENvZGVCbG9jay4gQnV0IHdlIGhhdmUgYWx3YXlzIGZp
cnN0IHJ1biB0aGlzIGFzIGEgcmVzdWx0CisgICAgLy8gb2YgdGhlIGVkZ2UgYmVpbmcgbWFya2Vk
IGV2ZW4gYmVmb3JlIHdlIGRldGVybWluZSB0aGUgbGl2ZW5lc3Mgb2YgdGhlIENvZGVCbG9jay4g
VGhpcworICAgIC8vIGFsbG93cyBhIENvZGVCbG9jayB0byBtYXJrIGl0c2VsZiBieSBmaXJzdCBw
cm92aW5nIHRoYXQgYWxsIG9mIHRoZSBTdHJ1Y3R1cmVzIGl0IHdlYWtseQorICAgIC8vIGRlcGVu
ZHMgb24gY291bGQgYmUgc3Ryb25nbHkgbWFya2VkLiAoVGhpcyBwYXJ0IGlzIGFsc28gY2FsbGVk
IHByb3BhZ2F0ZVRyYW5zaXRpb25zLikKKyAgICAvLworICAgIC8vIEFzIGEgd2VpcmQgY2F2ZWF0
LCB3ZSBvbmx5IGZpeHBvaW50IHRoZSBjb25zdHJhaW50cyBzbyBsb25nIGFzIHRoZSBDb2RlQmxv
Y2sgaXMgbm90IGxpdmUuCisgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlIG1heSBvdmVybG9vayBz
dHJ1Y3R1cmUgbWFya2luZyBvcHBvcnR1bml0aWVzIGNyZWF0ZWQgYnkgb3RoZXIgbWFya2luZwor
ICAgIC8vIHRoYXQgaGFwcGVucyBhZnRlciB0aGUgQ29kZUJsb2NrIGlzIG1hcmtlZC4gVGhpcyB3
YXMgYW4gYWNjaWRlbnRhbCBwb2xpY3kgZGVjaXNpb24gZnJvbSBhCisgICAgLy8gbG9uZyB0aW1l
IGFnbywgYnV0IGl0IGlzIHByb2JhYmx5IE9LLCBzaW5jZSBpdCdzIG9ubHkgd29ydGh3aGlsZSB0
byBrZWVwIGZpeHBvaW50aW5nIHRoZQorICAgIC8vIHN0cnVjdHVyZSBtYXJraW5nIGlmIHdlIHN0
aWxsIGhhdmUgdW5tYXJrZWQgc3RydWN0dXJlcyBhZnRlciB0aGUgZmlyc3Qgcm91bmQuIFdlIGFs
bW9zdAorICAgIC8vIG5ldmVyIHdpbGwgYmVjYXVzZSB3ZSB3aWxsIG1hcmstaWYtcHJvZml0YWJs
ZSBiYXNlZCBvbiB0aGUgb3duaW5nIGdsb2JhbCBvYmplY3QgYmVpbmcKKyAgICAvLyBhbHJlYWR5
IG1hcmtlZC4gV2UgbWFyayBpdCBqdXN0IGluIGNhc2UgdGhhdCBoYWRuJ3QgaGFwcGVuZWQgeWV0
LiBBbmQgaWYgdGhlIENvZGVCbG9jayBpcworICAgIC8vIG5vdCB5ZXQgbWFya2VkIGJlY2F1c2Ug
aXQgd2Vha2x5IGRlcGVuZHMgb24gYSBzdHJ1Y3R1cmUgdGhhdCB3ZSBkaWQgbm90IHlldCBtYXJr
LCB0aGVuIHdlCisgICAgLy8gd2lsbCBrZWVwIGZpeHBvaW50aW5nIHVudGlsIHRoZSBlbmQuCisg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsK
KyAgICBydW5Db25zdHJhaW50KGxvY2tlciwgdmlzaXRvciwgY29kZUJsb2NrKTsKK30KKwordGVt
cGxhdGUgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENvZGVCbG9ja0VkZ2UoQWJzdHJhY3RT
bG90VmlzaXRvciYsIENvZGVCbG9jayopOwordGVtcGxhdGUgdm9pZCBTY3JpcHRFeGVjdXRhYmxl
Ojp2aXNpdENvZGVCbG9ja0VkZ2UoU2xvdFZpc2l0b3ImLCBDb2RlQmxvY2sqKTsKKwogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y3JpcHRFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRF
eGVjdXRhYmxlLmgKaW5kZXggNzVkYWVlNGI4ZjI4YjViYzEwZTBlNjFjMjM2OTBlNjQ5MjA3NTE4
My4uMDlhZjgxNDFmODNhODg0ZTA1OTYyYzA4NWQwNjU4YzI3NzFiNzFkOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaApAQCAtMTM5LDYg
KzEzOSwxMiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlIDogcHVibGljIEV4ZWN1dGFibGVCYXNl
IHsKIAogICAgIHN0YXRpYyBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RN
YXBJbXBsKHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0ZU9iamVjdE1hcD4mIGRlc3QpOwogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KKyAgICBzdGF0aWMgdm9pZCBydW5Db25zdHJhaW50
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZpc2l0b3ImLCBDb2RlQmxvY2sqKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q29kZUJsb2Nr
RWRnZShWaXNpdG9yJiwgQ29kZUJsb2NrKik7CisgICAgdm9pZCBmaW5hbGl6ZUNvZGVCbG9ja0Vk
Z2UoVk0mLCBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiYpOworCiAgICAgU291cmNlQ29kZSBtX3Nv
dXJjZTsKICAgICBJbnRyaW5zaWMgbV9pbnRyaW5zaWMgeyBOb0ludHJpbnNpYyB9OwogICAgIGJv
b2wgbV9kaWRUcnlUb0VudGVySW5Mb29wIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGVJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlSW5saW5lcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVjODFiNWRmMDM2NzhjNGIwM2JjZGY2ZWViYWU0OTVkYTZmOGZmM2QKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlSW5s
aW5lcy5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGFibGUu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OmZp
bmFsaXplQ29kZUJsb2NrRWRnZShWTSYgdm0sIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+JiBjb2Rl
QmxvY2tFZGdlKQoreworICAgIGF1dG8qIGNvZGVCbG9jayA9IGNvZGVCbG9ja0VkZ2UuZ2V0KCk7
CisgICAgaWYgKCFjb2RlQmxvY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghdm0uaGVh
cC5pc01hcmtlZChjb2RlQmxvY2spKSB7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnNob3VsZEpl
dHRpc29uRHVlVG9XZWFrUmVmZXJlbmNlKHZtKSkKKyAgICAgICAgICAgIGNvZGVCbG9jay0+amV0
dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9XZWFrUmVmZXJlbmNlKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29kZUJsb2NrLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVU
b09sZEFnZSk7CisgICAgICAgIGlmIChjb2RlQmxvY2sgPT0gY29kZUJsb2NrRWRnZS5nZXQoKSkK
KyAgICAgICAgICAgIGNvZGVCbG9ja0VkZ2UuY2xlYXIoKTsKKyAgICB9Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggZTMyZGNi
MGFkMzRiMjNiY2RhMjQ3MWEwM2VlOTJjYjUyMzMzODIzOC4uM2JiNDU4ZWU4ZTM2ZDZiNGUyNjVm
ZGI5YzE5M2EyZWRkMjJkZTA4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApA
QCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKICNpbmNsdWRlICJF
dmFsQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZS5oIgogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUg
IkZpbGVCYXNlZEZ1enplckFnZW50LmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIK
QEAgLTI5OCw3ICsyOTcsNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5
cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9vbCogc3VjY2VzcykKICAgICBoYXNoTWFwQnVj
a2V0U2V0U3RydWN0dXJlLnNldCgqdGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0
YUtleT46OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKICAgICBo
YXNoTWFwQnVja2V0TWFwU3RydWN0dXJlLnNldCgqdGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFw
QnVja2V0RGF0YUtleVZhbHVlPjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051
bGwoKSkpOwogICAgIGJpZ0ludFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7Ci0gICAgZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKIAogICAgIC8vIEVh
Z2VybHkgaW5pdGlhbGl6ZSBjb25zdGFudCBjZWxscyBzaW5jZSB0aGUgY29uY3VycmVudCBjb21w
aWxlciBjYW4gYWNjZXNzIHRoZW0uCiAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAxZTllMGI0OGMzMjIwNjJmZWU4OTY1MzVmNTEx
NWE1NjNjYTQ1Mzk1Li42NjU2OGYyOWZlMGJmZTNmMDNlODA4ZmMxMjRmYmQ4NTJjYmM1ZGY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTM3Myw5ICszNzMsNiBAQCBjbGFzcyBW
TSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRM
aXN0Tm9kZTxWTT4gewogCiAgICAgRk9SX0VBQ0hfSlNDX0RZTkFNSUNfSVNPX1NVQlNQQUNFKERF
RklORV9EWU5BTUlDX0lTT19TVUJTUEFDRV9BQ0NFU1NPUl9JTVBMKQogCi0gICAgQUxXQVlTX0lO
TElORSBJc29DZWxsU2V0JiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50
cygpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWlu
dHM7IH0KLSAgICBBTFdBWVNfSU5MSU5FIElzb0NlbGxTZXQmIGV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aEZpbmFsaXplcnMoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aEZpbmFsaXplcnM7IH0KLQogICAgIEFMV0FZU19JTkxJTkUgR0NDbGllbnQ6Oklz
b1N1YnNwYWNlJiBjb2RlQmxvY2tTcGFjZSgpIHsgcmV0dXJuIGNsaWVudEhlYXAuY29kZUJsb2Nr
U3BhY2U7IH0KIAogICAgIERFRklORV9EWU5BTUlDX0lTT19TVUJTUEFDRV9BQ0NFU1NPUihldmFs
RXhlY3V0YWJsZVNwYWNlKQpAQCAtNDQxLDcgKzQzOCw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaGFzaE1hcEJ1Y2tldFNldFN0cnVjdHVyZTsKICAgICBT
dHJvbmc8U3RydWN0dXJlPiBoYXNoTWFwQnVja2V0TWFwU3RydWN0dXJlOwogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IGJpZ0ludFN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBleGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlU3RydWN0dXJlOwogCiAgICAgU3Ryb25nPEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcj4gbV9lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456262</attachid>
            <date>2022-03-31 11:38:34 -0700</date>
            <delta_ts>2022-03-31 13:13:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238485-20220331113833.patch</filename>
            <type>text/plain</type>
            <size>89562</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDE3MTc2YmU2MThhZGY2NWU5ZTE1MGIxYjhkNTdjYzEyZmU3MzFkLi5lZWQ3YjdmNGQ2OTllNDMx
ZDNkNmEwZTRiYmY5YThlYjQ3ODY2YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTUgQEAKKzIwMjItMDMtMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDg1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgdHVybmVkIG91
dCB0aGF0IGdldHRpbmcgQ29kZUJsb2NrIGZyb20gSlNGdW5jdGlvbiBpcyBjcml0aWNhbC4gQXMg
d2Ugc3RhcnQgdXNpbmcgdW5saW5rZWQgQmFzZWxpbmUsIHdlIGFyZSBsb2FkaW5nCisgICAgICAg
IENvZGVCbG9jayBmcm9tIEpTRnVuY3Rpb24gaW5zdGVhZCBvZiBlbWJlZGRpbmcgaXQsIGFuZCBp
dCByb3VnaGx5IGNvbnRyaWJ1dGVzIHRvIDAuNSUgcmVncmVzc2lvbiBpbiBTcGVlZG9tZXRlcjIu
CisgICAgICAgIEl0IGlzIGFsc28gY3J1Y2lhbCB0byBzb21lIG90aGVyIHBsYWNlczogYm91bmQg
ZnVuY3Rpb24gdGh1bmssIHJlbW90ZSBmdW5jdGlvbiB0aHVuaywgYW5kIHZpcnR1YWwgZnVuY3Rp
b24gY2FsbHMuCisgICAgICAgIFdoaWxlIHRoZSBzdWJzZXF1ZW50IHBhdGNoIHdpbGwgZW1iZWQg
Q29kZUJsb2NrIGludG8gQ2FsbExpbmtJbmZvIHRvIG1ha2UgaXQgZmFzdCwgd2UgYWxzbyB3b3Vs
ZCBsaWtlIHRvIGtlZXAgbG9hZGluZworICAgICAgICBDb2RlQmxvY2sgZnJvbSBKU0Z1bmN0aW9u
IGZhc3RlciBzaW5jZSB0aGlzIGlzIHN0aWxsIHVzZWQgaW4gYm91bmQgZnVuY3Rpb24gdGh1bmsg
ZXRjLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIHJlbW92ZSBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlIHRvIHJlbW92ZSBvbmUtbGV2ZWwgaW5kaXJlY3Rpb24gYmV0d2VlbiBFeGVjdXRh
YmxlIHRvIENvZGVCbG9jay4KKyAgICAgICAgV2UgY2FuIGRlbGVnYXRlIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UncyBqb2IgdG8gZXhpc3RpbmcgRXhlY3V0YWJsZXMgc28gdGhhdCB3ZSBjYW4g
a2VlcCB0aGUgY3VycmVudCB3ZWFrLWVkZ2UKKyAgICAgICAgZmVhdHVyZSB3aXRob3V0IGludHJv
ZHVjaW5nIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuIEl0IGFsc28gcmVtb3ZlcyBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlIGFsbG9jYXRpb25zIGFuZAorICAgICAgICBzaHJpbmtzIHNpemVv
ZihDb2RlQmxvY2spIGJ5IDggYnl0ZS4KKworICAgICAgICBXZSBtb3ZlIGtleSBmdW5jdGlvbnMg
ZnJvbSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlIHRvIFNjcmlwdEV4ZWN1dGFibGUsIGFuZCB3
ZSBtYWludGFpbiBFeGVjdXRhYmxlLXRvLUNvZGVCbG9jayBlZGdlCisgICAgICAgIGluIEV4ZWN1
dGFibGUgc2lkZS4KKworICAgICAgICBMb2NhbCB0ZXN0aW5nIHNob3dlZCB0aGF0IDAuMyUgcHJv
Z3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZl
cmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbkNvbW1vbik6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6b3duZXJFZGdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmg6IFJlbW92ZWQuCisgICAgICAgICogaGVh
cC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChKU0M6Okhl
YXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAoSlNDOjpIZWFw
OjpkZWxldGVBbGxDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkQ29yZUNvbnN0
cmFpbnRzKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6U2Ny
aXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0OjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6OnNldEFuZFNw
YWNlRm9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0
OjpjbGVhcmFibGVDb2RlU2V0Rm9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6U2NyaXB0RXhlY3V0
YWJsZVNwYWNlQW5kU2V0OjpvdXRwdXRDb25zdHJhaW50c1NldEZvcik6CisgICAgICAgIChKU0M6
OkhlYXA6OlNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6ZmluYWxpemVyU2V0Rm9yKToKKyAg
ICAgICAgKiBoZWFwL0lzb0NlbGxTZXQuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvRGly
ZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBy
dW50aW1lL0V2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpj
b2RlQmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6dW5saW5rZWRD
b2RlQmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6bnVtVmFyaWFi
bGVzKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om51bUZ1bmN0aW9uSG9pc3RpbmdD
YW5kaWRhdGVzKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Om51bVRvcExldmVsRnVu
Y3Rpb25EZWNscyk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjphbGxvd0RpcmVjdEV2
YWxDYWNoZSBjb25zdCk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb2RlQmxvY2sp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6Cisg
ICAgICAgIChKU0M6OnNob3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbCk6CisgICAgICAgICog
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZTo6cmVwbGFjZUNvZGVCbG9ja1dpdGgpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpHbG9iYWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAg
ICAgIChKU0M6Okdsb2JhbEV4ZWN1dGFibGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHNJbXBsKToK
KyAgICAgICAgKEpTQzo6R2xvYmFsRXhlY3V0YWJsZTo6cmVwbGFjZUNvZGVCbG9ja1dpdGgpOgor
ICAgICAgICAoSlNDOjpHbG9iYWxFeGVjdXRhYmxlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6
CisgICAgICAgICogcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6Okds
b2JhbEV4ZWN1dGFibGU6OmNvZGVCbG9jayBjb25zdCk6CisgICAgICAgIChKU0M6Okdsb2JhbEV4
ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50
aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbklt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3Jh
bUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6Y2xlYXJDb2RlKToKKyAgICAg
ICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUpOgorICAgICAgICAoSlNDOjpT
Y3JpcHRFeGVjdXRhYmxlOjpoYXNDbGVhcmFibGVDb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6U2NyaXB0
RXhlY3V0YWJsZTo6cnVuQ29uc3RyYWludCk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6OnZpc2l0Q29kZUJsb2NrRWRnZSk6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmg6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlSW5saW5lcy5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVJ
bmxpbmVzLmguCisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OmZpbmFsaXplQ29kZUJs
b2NrRWRnZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpW
TSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6ZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpWTTo6ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk6IERlbGV0ZWQu
CisKIDIwMjItMDMtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBPcHRpbWl6ZSB0aGUgY29uc3RydWN0aW9uIG9mIGEgSlNDOjpJZGVudGlmaWVyIGZyb20gYW4g
QVNDSUlMaXRlcmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDE4YWZl
ZDcxNjI5Y2UwNzE2MzZkOWZmYTRjZGU3YWJmY2E5NGFmZC4uMjlhN2FmOWEyZGU2ODYyOWI3OGYw
MjBmMWQ5ZDgxNzA5ZGEzYjI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNjI3LDcgKzYyNyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCiAgICAgYnl0ZWNvZGUvRGlyZWN0RXZh
bENvZGVDYWNoZS5oCiAgICAgYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAotICAgIGJ5dGVjb2Rl
L0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50
ZXIuaAogICAgIGJ5dGVjb2RlL0V4aXRLaW5kLmgKICAgICBieXRlY29kZS9FeGl0aW5nSW5saW5l
S2luZC5oCkBAIC0xMTUzLDYgKzExNTIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvU2NvcGVkQXJndW1lbnRzVGFibGUuaAogICAg
IHJ1bnRpbWUvU2NyaWJibGUuaAogICAgIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCisgICAg
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlSW5saW5lcy5oCiAgICAgcnVudGltZS9TY3JpcHRGZXRj
aFBhcmFtZXRlcnMuaAogICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hlci5oCiAgICAgcnVudGltZS9T
aGFkb3dSZWFsbU9iamVjdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyOTYx
OTdjYWY5YTE2ZDFjMzk1MTI4OTA0NmI0Njc5MTk2ZjBjZTguLjEwMmYyZDY0Nzg3YzZkNDBmODI5
NmY3MDNjOTU2YjA3OWJlOGZjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0z
NzAsNyArMzcwLDYgQEAKIAkJMEY1RTBGRDgyMDdDNzI3MzAwOTdGMERFIC8qIERGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNUUwRkQ2MjA3QzcyNzEwMDk3RjBERSAvKiBERkdBYnN0cmFjdElu
dGVycHJldGVyQ2xvYmJlclN0YXRlLmggKi87IH07CiAJCTBGNUUwRkU3MjA4NkFENDgwMDk3RjBE
RSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJW
TS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NUVGOTFGMTY4NzhGN0QwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUVGOTFDMTY4NzhGNzgwMDNFNUMyNSAvKiBK
SVRUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQkwRjYwRkU5MDFGRkMzNzAyMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MEZF
OEUxRkZDMzZGRDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYxODMyQTFDNDVC
RjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyog
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi87IH07CiAJCTBGNjE4MzJEMUM0NUJGMDcwMDcyNDUw
QiAvKiBBaXJFbWl0U2h1ZmZsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2MTgzMjQxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVtaXRTaHVmZmxlLmgg
Ki87IH07CiAJCTBGNjE4MzJGMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJMb3dlckFmdGVyUmVnQWxs
b2MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4
MzI2MUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJMb3dlckFmdGVyUmVnQWxsb2MuaCAqLzsgfTsKQEAg
LTE5ODksNiArMTk4OCw3IEBACiAJCUUzODZGRDdFMjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3Jh
bFBsYWluVGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM4NkZENzgyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lLmggKi87IH07
CiAJCUUzODZGRDdGMjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NkZE
NzkyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmggKi87IH07
CiAJCUUzODkzQTFEMjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzg5M0ExQzIyMDNBN0M2MDBFNzlBNzQgLyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90
eXBlLmx1dC5oICovOyB9OworCQlFMzhEQjJFNzI3RjU4OEY4MDAyN0JEM0YgLyogU2NyaXB0RXhl
Y3V0YWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzOERCMkU2MjdGNTg4RjcwMDI3QkQzRiAvKiBTY3JpcHRFeGVjdXRhYmxlSW5saW5l
cy5oICovOyB9OwogCQlFMzhFODc5MDI1NEI5Nzg0MDBGNkY5RTQgLyogSlNEYXRlTWF0aC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzg4RkMyMjE0
NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5jcHAgKi87IH07CiAJCUUzOTAwNjIxMjIwOEJG
QzQwMDEwMTlDRiAvKiBTdWJzcGFjZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5MDA2MjAyMjA4QkZDMzAwMTAxOUNGIC8qIFN1YnNwYWNl
QWNjZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTM5MkU2RjgyNEQyNUZBNjAwQjIwNzY3IC8qIEIzQm90dG9tVHVwbGVWYWx1ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzkyRTZGNjI0RDI1
RkE2MDBCMjA3NjcgLyogQjNCb3R0b21UdXBsZVZhbHVlLmNwcCAqLzsgfTsKQEAgLTI4OTcsOCAr
Mjg5Nyw2IEBACiAJCTBGNUUwRkU2MjA4NkFENDcwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZN
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElzb1N1YnNwYWNlUGVy
Vk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFRjkxQjE2ODc4Rjc4MDAz
RTVDMjUgLyogSklUVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpJVFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUVGOTFD
MTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSklUVGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNjBG
RThEMUZGQzM2RkMwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjYwRkU4RTFGRkMzNkZEMDAw
MzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0Nv
bnZlbnRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJDQ2FsbGluZ0NvbnZlbnRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1
MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEFpckNDYWxsaW5nQ29udmVudGlvbi5oOyBwYXRoID0gYjMvYWlyL0FpckNDYWxsaW5n
Q29udmVudGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYxODMyMjFDNDVC
RjA3MDA3MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEFpckN1c3RvbS5jcHA7IHBhdGggPSBiMy9haXIvQWlyQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0NzksNiArNTQ3Nyw3IEBACiAJCUUzOEQwNjBC
MUY4RTgxNDEwMDY0OUNGMiAvKiBKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwQzFGOEU4MTQxMDA2NDlDRjIgLyogU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dEZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYw
RDFGOEU4MTQxMDA2NDlDRjIgLyogSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzhEQjJFNjI3RjU4OEY3MDAyN0JEM0Yg
LyogU2NyaXB0RXhlY3V0YWJsZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0RXhlY3V0YWJsZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM5MDA2MjAyMjA4QkZDMzAwMTAxOUNGIC8qIFN1YnNwYWNlQWNjZXNzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1YnNwYWNlQWNjZXNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOTE1QzA2MjMwOTY4MjkwMENCMjU2MSAvKiBXYXNtQ29udGV4
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzOTJFNkY2MjREMjVGQTYwMEIyMDc2NyAvKiBCM0JvdHRvbVR1cGxl
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNCb3R0b21U
dXBsZVZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzQm90dG9tVHVwbGVWYWx1ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjI0LDYgKzgyMjMsNyBAQAogCQkJCTMzMTExQjhBMjM5
NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovLAogCQkJCTE0NzM0MUUwMURDMkNFOTYwMEFB
MjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFDRDFEQzAyRDc5MDBB
QTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5oICovLAorCQkJCUUzOERCMkU2MjdGNTg4RjcwMDI3
QkQzRiAvKiBTY3JpcHRFeGVjdXRhYmxlSW5saW5lcy5oICovLAogCQkJCTg4NTIxNTFBOUMzODQy
Mzg5QjMyMTVCNyAvKiBTY3JpcHRGZXRjaGVyLmggKi8sCiAJCQkJRTM4RDA2MEMxRjhFODE0MTAw
NjQ5Q0YyIC8qIFNjcmlwdEZldGNoUGFyYW1ldGVycy5oICovLAogCQkJCUE3Mjk5REEzMTdEMTI4
NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5jcHAgKi8sCkBAIC04OTc3LDggKzg5NzcsNiBA
QAogCQkJCTE0QUQ5MTEyMURDQTk3RkQwMDE0RjlGRSAvKiBFdmFsQ29kZUJsb2NrLmNwcCAqLywK
IAkJCQkxNEFEOTEwNjFEQ0E5Mjk0MDAxNEY5RkUgLyogRXZhbENvZGVCbG9jay5oICovLAogCQkJ
CTE0MTQyRTUyMUI3OTZFREQwMEY0QkY0QiAvKiBFeGVjdXRhYmxlSW5mby5oICovLAotCQkJCTBG
NjBGRThEMUZGQzM2RkMwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcCAq
LywKLQkJCQkwRjYwRkU4RTFGRkMzNkZEMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZS5oICovLAogCQkJCTBGNTZBMUQ0MTUwMDFDRjIwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3Vu
dGVyLmNwcCAqLywKIAkJCQkwRjU2QTFEMTE1MDAwRjMxMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291
bnRlci5oICovLAogCQkJCTBGNDRBN0E5MjBCRjY4NUUwMDIyQjE3MSAvKiBFeGl0RmxhZy5jcHAg
Ki8sCkBAIC0xMDI3Myw3ICsxMDI3MSw2IEBACiAJCQkJRTM1QTBCOUQyMjBBRDg3QTAwQUM0NDc0
IC8qIEV4ZWN1dGFibGVCYXNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxNDJFNTMx
Qjc5NkVERDAwRjRCRjRCIC8qIEV4ZWN1dGFibGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjUxOTNGNzI2NkM0MzJEMDA0ODNBMkMgLyogRXhlY3V0YWJsZU1lbW9yeUhhbmRsZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMEY2MEZFOTAxRkZDMzcwMjAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTZBMUQzMTUwMDBGMzUwMDI5OTJC
MSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ0QTdCMDIwQkY2
ODYyMDAyMkIxNzEgLyogRXhpdEZsYWcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDRBN0IxMjBC
RjY4QzkwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MTA0NCw2ICsxMTA0MSw3IEBACiAJCQkJQTVGRDAwNzAxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlw
dENhbGxTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwN0UxODlCMEI0QzAwNjMzMjMx
IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzM0MUNF
MURDMDJENzkwMEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFMzhEQjJFNzI3RjU4OEY4MDAyN0JEM0YgLyogU2NyaXB0RXhlY3V0YWJsZUlubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUNFQUU3RDdCODg5QjQ3N0JBOTNBQkE2QyAvKiBTY3JpcHRGZXRj
aGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzIwMUMxRTFGOEU4MjRDMDA3NkEwMzIgLyogU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4
MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4NGE5NjI0MWRiMWQ4M2JiY2RhZDNjMTllY2EzZTUzOWM2
ZmI3YmY3Li4wNTA2OWM1NDg5MjQ4YTdkMDJjNTc2ZDAwYjkzMTIxNmE0MDNlYTI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yMjksNyArMjI5LDYgQEAgYnl0ZWNvZGUvRGVsZXRl
QnlTdGF0dXMuY3BwCiBieXRlY29kZS9EZWxldGVCeVZhcmlhbnQuY3BwCiBieXRlY29kZS9EaXJl
Y3RFdmFsQ29kZUNhY2hlLmNwcAogYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5jcHAKLWJ5dGVjb2Rl
L0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCiBieXRlY29kZS9FeGVjdXRpb25Db3VudGVy
LmNwcAogYnl0ZWNvZGUvRXhpdEZsYWcuY3BwCiBieXRlY29kZS9FeGl0S2luZC5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNmQ5ZDhiNTFl
MTE5ZGJjMDc4MDkxMTRlMWNiMTBlZGI2NzI4NDU3OC4uNmIwMjkxNTBiNTEyYmMzOTVhMzE5MDI4
ZTJlYzVhN2Q4ZWY4YTg4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKQEAgLTMxMSw3ICszMTEsNiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jawog
dm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFn
LCBDb2RlQmxvY2smIG90aGVyKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAg
ICBmaW5pc2hDcmVhdGlvbkNvbW1vbih2bSk7CiAKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7
CiAKQEAgLTM2Nyw3ICszNjYsNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIEpTU2Nv
cGUqIHNjb3BlKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmaW5pc2hD
cmVhdGlvbkNvbW1vbih2bSk7CiAKICAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOwog
CkBAIC03NjYsMTEgKzc2NCw2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbkNvbW1vbihWTSYgdm0p
Ci17Ci0gICAgbV9vd25lckVkZ2Uuc2V0KHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlOjpjcmVhdGUodm0sIHRoaXMpKTsKLX0KLQogI2lmIEVOQUJMRShKSVQpCiB2b2lkIENvZGVC
bG9jazo6c2V0dXBXaXRoVW5saW5rZWRCYXNlbGluZUNvZGUoUmVmPEJhc2VsaW5lSklUQ29kZT4g
aml0Q29kZSkKIHsKQEAgLTEwNTEsNyArMTA0NCw2IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdENo
aWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgQ29kZUJsb2Nr
KiB0aGlzT2JqZWN0ID0ganNDYXN0PENvZGVCbG9jayo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKGNlbGwsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb3du
ZXJFZGdlKTsKICAgICB0aGlzT2JqZWN0LT52aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogfQogCkBA
IC0xMDc5LDcgKzEwNzEsNyBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGxvY2tlciwgdmlz
aXRvcik7CiAgICAgc3Ryb25nbHlWaXNpdFdlYWtSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7
CiAgICAgCi0gICAgSGVhcDo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSkuYWRkKHRo
aXMpOworICAgIEhlYXA6OkNvZGVCbG9ja1NwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkp
LmFkZCh0aGlzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTE2NjcsNyAr
MTY1OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0p
CiAgICAgfTsKICAgICB1cGRhdGVBY3Rpdml0eSgpOwogCi0gICAgSGVhcDo6U3BhY2VBbmRTZXQ6
OnNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOworICAgIEhlYXA6OkNvZGVCbG9ja1Nw
YWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKIAogICAgIC8vIElu
IENvZGVCbG9jazo6c2hvdWxkVmlzaXRTdHJvbmdseSgpIHdlIG1heSBoYXZlIGRlY2lkZWQgdG8g
c2tpcCB2aXNpdGluZyB0aGlzCiAgICAgLy8gY29kZUJsb2NrLiBCeSB0aGUgdGltZSB3ZSBnZXQg
aGVyZSwgd2UncmUgZG9uZSB3aXRoIHRoZSB2ZXJpZmllciBHQy4gU28sIGxldCdzCkBAIC0xODM0
LDcgKzE4MjYsNyBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5j
ZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsCiAgICAgVU5VU0VEX1BBUkFNKGxv
Y2tlcik7CiAgICAgCiAgICAgdmlzaXRvci5hcHBlbmQobV9nbG9iYWxPYmplY3QpOwotICAgIHZp
c2l0b3IuYXBwZW5kKG1fb3duZXJFeGVjdXRhYmxlKTsgLy8gVGhpcyBpcyBleHRyYSBpbXBvcnRh
bnQgc2luY2UgaXQgY2F1c2VzIHRoZSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlIHRvIGJlIG1h
cmtlZC4KKyAgICB2aXNpdG9yLmFwcGVuZChtX293bmVyRXhlY3V0YWJsZSk7IC8vIFRoaXMgaXMg
ZXh0cmEgaW1wb3J0YW50IHNpbmNlIGl0IGNhdXNlcyB0aGUgRXhlY3V0YWJsZSAtPiBDb2RlQmxv
Y2sgZWRnZSBhY3RpdmF0ZWQuCiAgICAgdmlzaXRvci5hcHBlbmQobV91bmxpbmtlZENvZGUpOwog
ICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2RpcmVjdEV2YWxDb2Rl
Q2FjaGUudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNDY5NjNkNzNkZTIzZTAxZmQxNTI1NDUxYTgzNDdiNmM3
NzVjMTgyNi4uMjdhODMzNTE4MDAxMzY5ODU0MmU0N2I1NDNjYWIzMmJhM2FjY2YzMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtODcsMTIgKzg3LDEy
IEBAIGNsYXNzIFVuYXJ5QXJpdGhQcm9maWxlOwogY2xhc3MgQmluYXJ5QXJpdGhQcm9maWxlOwog
Y2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgQ29kZUJsb2NrU2V0OwotY2xh
c3MgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTsKIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7
CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBMTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ7CiBjbGFzcyBNZXRhZGF0YVRhYmxlOwogY2xhc3Mg
UmVnaXN0ZXJBdE9mZnNldExpc3Q7CitjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU3Ry
dWN0dXJlU3R1YkluZm87CiBjbGFzcyBCYXNlbGluZUpJVENvZGU7CiBjbGFzcyBCYXNlbGluZUpJ
VERhdGE7CkBAIC0xMzQsOCArMTM0LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgQ29weVBhcnNlZEJsb2NrVGFnLCBD
b2RlQmxvY2smIG90aGVyKTsKICAgICBib29sIGZpbmlzaENyZWF0aW9uKFZNJiwgU2NyaXB0RXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTU2NvcGUqKTsK
LSAgICAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uQ29tbW9uKFZNJik7CiAKICAgICBXcml0ZUJh
cnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogCkBAIC0zNjksOCArMzY3LDYg
QEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgCiAgICAgU2NyaXB0RXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9vd25lckV4ZWN1dGFi
bGUuZ2V0KCk7IH0KICAgICAKLSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBvd25lckVk
Z2UoKSBjb25zdCB7IHJldHVybiBtX293bmVyRWRnZS5nZXQoKTsgfQotCiAgICAgVk0mIHZtKCkg
Y29uc3QgeyByZXR1cm4gKm1fdm07IH0KIAogICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzUmVnaXN0
ZXIoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+dGhpc1JlZ2lzdGVyKCk7IH0KQEAg
LTg0OSw3ICs4NDUsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrU2V0OwotICAgIGZyaWVuZCBjbGFzcyBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOworICAgIGZyaWVuZCBjbGFzcyBGdW5jdGlvbkV4ZWN1
dGFibGU7CisgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWaXNpdG9yPiBBTFdBWVNfSU5MSU5FIHZvaWQgdmlzaXRDaGlsZHJlbihWaXNp
dG9yJik7CiAKQEAgLTkyMyw3ICs5MjAsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKIAogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZENvZGVCbG9jaz4gbV91bmxpbmtlZENv
ZGU7CiAgICAgV3JpdGVCYXJyaWVyPFNjcmlwdEV4ZWN1dGFibGU+IG1fb3duZXJFeGVjdXRhYmxl
OwotICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX293bmVyRWRn
ZTsKICAgICAvLyBtX3ZtIG11c3QgYmUgYSBwb2ludGVyIChpbnN0ZWFkIG9mIGEgcmVmZXJlbmNl
KSBiZWNhdXNlIHRoZSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IKICAgICAvLyBjYW5ub3QgaGFu
ZGxlIGl0IGJlaW5nIGEgcmVmZXJlbmNlLgogICAgIFZNKiBtX3ZtOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmRkYjdhNjY1Nzk5YjY3NzY3
YjMwNGZlNWYzNTg5NDdhZDQ3OTM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKLQotI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCi0jaW5jbHVk
ZSAiSlNPYmplY3RJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2U6OnNfaW5mbyA9IHsgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UiX3MsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZSkgfTsKLQotU3RydWN0dXJlKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKLXsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwotfQotCi1FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlOjpjcmVhdGUoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKLXsKLSAgICBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bSkpIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Uo
dm0sIGNvZGVCbG9jayk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFT
U0VSVCghaXNBY3RpdmUoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lk
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2Vs
bCwgVmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7Ci0gICAg
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSA9IGpzQ2FzdDxFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlKj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjZWxsLCBp
bmZvKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7Ci0KLSAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGVkZ2UtPm1fY29kZUJsb2NrLmdldCgpOwotCi0gICAgLy8g
SXQncyBwb3NzaWJsZSBmb3Igc29tZW9uZSB0byBob2xkIGEgcG9pbnRlciB0byB0aGUgZWRnZSBh
ZnRlciB0aGUgZWRnZSBoYXMgY2xlYXJlZCBpdHMgd2VhawotICAgIC8vIHJlZmVyZW5jZSB0byB0
aGUgY29kZUJsb2NrLiBJbiBhIGNvbnNlcnZhdGl2ZSBHQyBsaWtlIG91cnMsIHRoYXQgY291bGQg
aGFwcGVuIGF0IHJhbmRvbSBmb3IKLSAgICAvLyBubyBnb29kIHJlYXNvbiBhbmQgaXQncyBUb3Rh
bGx5IE9LIChUTSkuIFNlZSBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpIGZvciB3aGVyZSB3ZSBj
bGVhcgotICAgIC8vIG1fY29kZUJsb2NrLgotICAgIGlmICghY29kZUJsb2NrKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgaWYgKCFlZGdlLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIHZpc2l0
b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsK
LQotICAgIGlmIChjb2RlQmxvY2stPnNob3VsZFZpc2l0U3Ryb25nbHkobG9ja2VyLCB2aXNpdG9y
KSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwotICAgIAot
ICAgIGlmICghdmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkuYWRkKGVkZ2UpOwotICAgIAotICAg
IGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKSB7Ci0g
ICAgICAgIC8vIElmIHdlIGpldHRpc29uIG91cnNlbHZlcyB3ZSdsbCBpbnN0YWxsIG91ciBhbHRl
cm5hdGl2ZSwgc28gbWFrZSBzdXJlIHRoYXQgaXQKLSAgICAgICAgLy8gc3Vydml2ZXMgR0MgZXZl
biBpZiB3ZSBkb24ndC4KLSAgICAgICAgdmlzaXRvci5hcHBlbmQoY29kZUJsb2NrLT5tX2FsdGVy
bmF0aXZlKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gTk9URTogVGhlcmUgYXJlIHR3byBzaWRlcyB0
byB0aGlzIGNvbnN0cmFpbnQsIHdpdGggZGlmZmVyZW50IHJlcXVpcmVtZW50cyBmb3IgY29ycmVj
dG5lc3MuCi0gICAgLy8gQmVjYXVzZSBldmVyeXRoaW5nIGlzIHVsdGltYXRlbHkgcHJvdGVjdGVk
IHdpdGggd2VhayByZWZlcmVuY2VzIGFuZCBqZXR0aXNvbmluZywgaXQncwotICAgIC8vIGFsd2F5
cyAiT0siIHRvIGNsYWltIHRoYXQgc29tZXRoaW5nIGlzIGRlYWQgcHJlbWF0dXJlbHkgYW5kIGl0
J3MgIk9LIiB0byBrZWVwIHRoaW5ncyBhbGl2ZS4KLSAgICAvLyBCdXQgYm90aCBjaG9pY2VzIGNv
dWxkIGxlYWQgdG8gYmFkIHBlcmYgLSBlaXRoZXIgcmVjb21wIGN5Y2xlcyBvciBsZWFrcy4KLSAg
ICAvLwotICAgIC8vIERldGVybWluaW5nIENvZGVCbG9jayBsaXZlbmVzczogVGhpcyBwYXJ0IGlz
IHRoZSBtb3N0IGNvbnNlcXVlbnRpYWwuIFdlIHdhbnQgdG8ga2VlcCB0aGUKLSAgICAvLyBvdXRw
dXQgY29uc3RyYWludCBhY3RpdmUgc28gbG9uZyBhcyB3ZSB0aGluayB0aGF0IHdlIG1heSB5ZXQg
cHJvdmUgdGhhdCB0aGUgQ29kZUJsb2NrIGlzCi0gICAgLy8gbGl2ZSBidXQgd2UgaGF2ZW4ndCBk
b25lIGl0IHlldC4KLSAgICAvLwotICAgIC8vIE1hcmtpbmcgU3RydWN0dXJlcyBpZiBwcm9maXRh
YmxlOiBJdCdzIGltcG9ydGFudCB0aGF0IHdlIGRvIGEgcGFzcyBvZiB0aGlzLiBMb2dpY2FsbHks
IHRoaXMKLSAgICAvLyBzZWVtcyBsaWtlIGl0IGlzIGEgY29uc3RyYWludCBvZiBDb2RlQmxvY2su
IEJ1dCB3ZSBoYXZlIGFsd2F5cyBmaXJzdCBydW4gdGhpcyBhcyBhIHJlc3VsdAotICAgIC8vIG9m
IHRoZSBlZGdlIGJlaW5nIG1hcmtlZCBldmVuIGJlZm9yZSB3ZSBkZXRlcm1pbmUgdGhlIGxpdmVu
ZXNzIG9mIHRoZSBDb2RlQmxvY2suIFRoaXMKLSAgICAvLyBhbGxvd3MgYSBDb2RlQmxvY2sgdG8g
bWFyayBpdHNlbGYgYnkgZmlyc3QgcHJvdmluZyB0aGF0IGFsbCBvZiB0aGUgU3RydWN0dXJlcyBp
dCB3ZWFrbHkKLSAgICAvLyBkZXBlbmRzIG9uIGNvdWxkIGJlIHN0cm9uZ2x5IG1hcmtlZC4gKFRo
aXMgcGFydCBpcyBhbHNvIGNhbGxlZCBwcm9wYWdhdGVUcmFuc2l0aW9ucy4pCi0gICAgLy8KLSAg
ICAvLyBBcyBhIHdlaXJkIGNhdmVhdCwgd2Ugb25seSBmaXhwb2ludCB0aGUgY29uc3RyYWludHMg
c28gbG9uZyBhcyB0aGUgQ29kZUJsb2NrIGlzIG5vdCBsaXZlLgotICAgIC8vIFRoaXMgbWVhbnMg
dGhhdCB3ZSBtYXkgb3Zlcmxvb2sgc3RydWN0dXJlIG1hcmtpbmcgb3Bwb3J0dW5pdGllcyBjcmVh
dGVkIGJ5IG90aGVyIG1hcmtpbmcKLSAgICAvLyB0aGF0IGhhcHBlbnMgYWZ0ZXIgdGhlIENvZGVC
bG9jayBpcyBtYXJrZWQuIFRoaXMgd2FzIGFuIGFjY2lkZW50YWwgcG9saWN5IGRlY2lzaW9uIGZy
b20gYQotICAgIC8vIGxvbmcgdGltZSBhZ28sIGJ1dCBpdCBpcyBwcm9iYWJseSBPSywgc2luY2Ug
aXQncyBvbmx5IHdvcnRod2hpbGUgdG8ga2VlcCBmaXhwb2ludGluZyB0aGUKLSAgICAvLyBzdHJ1
Y3R1cmUgbWFya2luZyBpZiB3ZSBzdGlsbCBoYXZlIHVubWFya2VkIHN0cnVjdHVyZXMgYWZ0ZXIg
dGhlIGZpcnN0IHJvdW5kLiBXZSBhbG1vc3QKLSAgICAvLyBuZXZlciB3aWxsIGJlY2F1c2Ugd2Ug
d2lsbCBtYXJrLWlmLXByb2ZpdGFibGUgYmFzZWQgb24gdGhlIG93bmluZyBnbG9iYWwgb2JqZWN0
IGJlaW5nCi0gICAgLy8gYWxyZWFkeSBtYXJrZWQuIFdlIG1hcmsgaXQganVzdCBpbiBjYXNlIHRo
YXQgaGFkbid0IGhhcHBlbmVkIHlldC4gQW5kIGlmIHRoZSBDb2RlQmxvY2sgaXMKLSAgICAvLyBu
b3QgeWV0IG1hcmtlZCBiZWNhdXNlIGl0IHdlYWtseSBkZXBlbmRzIG9uIGEgc3RydWN0dXJlIHRo
YXQgd2UgZGlkIG5vdCB5ZXQgbWFyaywgdGhlbiB3ZQotICAgIC8vIHdpbGwga2VlcCBmaXhwb2lu
dGluZyB1bnRpbCB0aGUgZW5kLgotICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNX
aXRoQ29uc3RyYWludHMoKS5hZGQoZWRnZSk7Ci0gICAgZWRnZS0+cnVuQ29uc3RyYWludChsb2Nr
ZXIsIHZtLCB2aXNpdG9yKTsKLX0KLQotREVGSU5FX1ZJU0lUX0NISUxEUkVOKEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2UpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotdm9pZCBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbChKU0NlbGwq
IGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgVk0mIHZtID0gdmlzaXRvci52bSgpOwot
ICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2UgPSBqc0Nhc3Q8RXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZSo+KGNlbGwpOwotICAgIAotICAgIGVkZ2UtPnJ1bkNvbnN0cmFpbnQoTm9M
b2NraW5nTmVjZXNzYXJ5LCB2bSwgdmlzaXRvcik7Ci19Ci0KLURFRklORV9WSVNJVF9PVVRQVVRf
Q09OU1RSQUlOVFMoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSk7Ci0KLXZvaWQgRXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQotewotICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2suZ2V0KCk7Ci0gICAgCi0gICAgaWYg
KCF2bS5oZWFwLmlzTWFya2VkKGNvZGVCbG9jaykpIHsKLSAgICAgICAgaWYgKGNvZGVCbG9jay0+
c2hvdWxkSmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2Uodm0pKQotICAgICAgICAgICAgY29kZUJs
b2NrLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2UpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBjb2RlQmxvY2stPmpldHRpc29uKFByb2ZpbGVyOjpKZXR0
aXNvbkR1ZVRvT2xkQWdlKTsKLSAgICAgICAgbV9jb2RlQmxvY2suY2xlYXIoKTsKLSAgICB9Ci0g
ICAgCi0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpLnJl
bW92ZSh0aGlzKTsKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJh
aW50cygpLnJlbW92ZSh0aGlzKTsKLX0KLQotaW5saW5lIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZTo6YWN0aXZhdGUoKQotewotICAgIHNldFBlckNlbGxCaXQodHJ1ZSk7Ci19Ci0KLWlu
bGluZSB2b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGUoKQotewotICAg
IHNldFBlckNlbGxCaXQoZmFsc2UpOwotfQotCi1pbmxpbmUgYm9vbCBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHBlckNlbGxCaXQoKTsK
LX0KLQotQ29kZUJsb2NrKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFjdGl2YXRlQW5k
VW53cmFwKEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2UpCi17Ci0gICAgaWYgKCFlZGdl
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBlZGdlLT5kZWFjdGl2YXRlKCk7Ci0gICAg
cmV0dXJuIGVkZ2UtPmNvZGVCbG9jaygpOwotfQotCi1FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
KiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwKENvZGVCbG9jayogY29kZUJsb2NrKQot
ewotICAgIGlmICghY29kZUJsb2NrKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gY29kZUJsb2NrLT5vd25lckVkZ2UoKTsKLX0KLSAgICAKLUV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2UqIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3RpdmF0ZShDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKLXsKLSAgICBpZiAoIWNvZGVCbG9jaykKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogcmVzdWx0ID0gY29kZUJsb2Nr
LT5vd25lckVkZ2UoKTsKLSAgICByZXN1bHQtPmFjdGl2YXRlKCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6RXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQotICAgIDogQmFzZSh2bSwgdm0uZXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fY29kZUJsb2Nr
KHZtLCB0aGlzLCBjb2RlQmxvY2spCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+
Ci12b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgVmlzaXRvciYgdmlzaXRvcikKLXsKLSAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2NrLmdldCgpOwotICAgIAotICAgIGNv
ZGVCbG9jay0+cHJvcGFnYXRlVHJhbnNpdGlvbnMobG9ja2VyLCB2aXNpdG9yKTsKLSAgICBjb2Rl
QmxvY2stPmRldGVybWluZUxpdmVuZXNzKGxvY2tlciwgdmlzaXRvcik7Ci0KLSAgICBpZiAodmlz
aXRvci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhDb25zdHJhaW50cygpLnJlbW92ZSh0aGlzKTsKLX0KLQotdGVtcGxhdGUgdm9p
ZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIFZNJiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwotdGVtcGxhdGUgdm9pZCBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIFZNJiwgU2xvdFZpc2l0b3ImKTsKLQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYTZmOWI0
ZThlMWFhYTJlNzBhM2QwMWNmMzlmMjk2NmJjOTM0NjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKLSNpbmNsdWRlICJJc29T
dWJzcGFjZS5oIgotI2luY2x1ZGUgIkpTQ2FzdC5oIgotI2luY2x1ZGUgIlZNLmgiCi0KLW5hbWVz
cGFjZSBKU0MgewotCi1jbGFzcyBDb2RlQmxvY2s7Ci1jbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7Ci0KLWNsYXNzIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UgZmluYWwgOiBwdWJsaWMgSlND
ZWxsIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0
cnVjdHVyZUlzSW1tb3J0YWw7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+Ci0gICAgc3RhdGljIEdDQ2xpZW50OjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlU3BhY2UoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQotICAgIHN0
YXRpYyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBjcmVhdGUoVk0mLCBDb2RlQmxvY2sqKTsK
LSAgICAKLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLmdldCgpOyB9Ci0KLSAgICBERUNMQVJFX1ZJU0lUX0NI
SUxEUkVOOwotICAgIERFQ0xBUkVfVklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTOwotICAgIHZvaWQg
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKLSAgICAKLSAgICBzdGF0aWMgQ29kZUJsb2Nr
KiB1bndyYXAoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSkKLSAgICB7Ci0gICAgICAg
IGlmICghZWRnZSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4g
ZWRnZS0+Y29kZUJsb2NrKCk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBDb2RlQmxvY2sqIGRl
YWN0aXZhdGVBbmRVbndyYXAoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSk7Ci0gICAg
Ci0gICAgc3RhdGljIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIHdyYXAoQ29kZUJsb2NrKiBj
b2RlQmxvY2spOwotICAgIAotICAgIHN0YXRpYyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiB3
cmFwQW5kQWN0aXZhdGUoQ29kZUJsb2NrKiBjb2RlQmxvY2spOwotCi0gICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkNvZGVCbG9jaygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlLCBtX2NvZGVCbG9jayk7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAgIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UoVk0mLCBDb2RlQmxvY2sqKTsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKLQotICAgIHZvaWQgYWN0aXZhdGUoKTsKLSAgICB2b2lkIGRlYWN0aXZhdGUoKTsKLSAg
ICBib29sIGlzQWN0aXZlKCkgY29uc3Q7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9y
PiB2b2lkIHJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBWaXNp
dG9yJik7Ci0KLSAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA4
ZTUzZGRlYWQxZmQ0NTU4MGY1Zjk0ZDQ4ZWNmYWNlMTdjNzc3MDYxLi43MWI4NzgzYjJiZjZhMjFj
Njk2MzYzNzUyNTU2M2I0MzU4ZDZjNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cApAQCAtMzY4LDggKzM2OCw2IEBAIEhlYXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIs
ICp0aGlzLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0
b3IuZ2V0KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQogICAgIEZPUl9FQUNIX0pTQ19DT01NT05fSVNP
X1NVQlNQQUNFKElOSVRfU0VSVkVSX0lTT19TVUJTUEFDRSkKICAgICBGT1JfRUFDSF9KU0NfU1RS
VUNUVVJFX0lTT19TVUJTUEFDRShJTklUX1NFUlZFUl9TVFJVQ1RVUkVfSVNPX1NVQlNQQUNFKQot
ICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNX
aXRoRmluYWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCiAgICAgLCBjb2Rl
QmxvY2tTcGFjZUFuZFNldCBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgQ29kZUJsb2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKICAgICAsIGZ1bmN0
aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1
OGYzCiAgICAgLCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlQW5kU2V0IElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9ncmFtRXhlY3V0YWJsZSkg
Ly8gSGFzaDoweDUyN2M3N2U3CkBAIC02NzQsOSArNjcyLDIyIEBAIHZvaWQgSGVhcDo6ZmluYWxp
emVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpCiB7CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsK
ICAgICB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsK
LSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0
YWJsZT4oZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQuc3BhY2UpOworCisgICAgeworICAg
ICAgICAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5h
bGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5z
dGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCisKKyAgICAg
ICAgLy8gRnVuY3Rpb25FeGVjdXRhYmxlIHJlcXVpcmVzIGFsbCBsaXZlIGluc3RhbmNlcyB0byBy
dW4gZmluYWxpemVycy4gVGh1cywgd2UgZG8gbm90IHVzZSBmaW5hbGl6ZXIgc2V0LgorICAgICAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJs
ZT4oZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQuc3BhY2UpOworCisgICAgICAgIGZpbmFs
aXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8UHJvZ3JhbUV4ZWN1dGFibGU+KHByb2dy
YW1FeGVjdXRhYmxlU3BhY2VBbmRTZXQuZmluYWxpemVyU2V0KTsKKyAgICAgICAgaWYgKG1fZXZh
bEV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8RXZhbEV4ZWN1dGFibGU+KG1fZXZhbEV4ZWN1dGFibGVTcGFjZS0+ZmluYWxp
emVyU2V0KTsKKyAgICAgICAgaWYgKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKKyAg
ICAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8TW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGU+KG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZS0+ZmluYWxpemVy
U2V0KTsKKyAgICB9CisKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PFN5bWJvbFRhYmxlPihzeW1ib2xUYWJsZVNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KGV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29k
ZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0
IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxp
emVVbmNvbmRpdGlvbmFsbHkuCisKICAgICBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoCiAgICAgICAg
IFsmXSAoYXV0byYgc3BhY2UpIHsKICAgICAgICAgICAgIHRoaXMtPmZpbmFsaXplTWFya2VkVW5j
b25kaXRpb25hbEZpbmFsaXplcnM8Q29kZUJsb2NrPihzcGFjZS5zZXQpOwpAQCAtMTAwMyw3ICsx
MDE0LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKERlbGV0ZUFsbENvZGVFZmZv
cnQgZWZmb3J0KQogICAgIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoCiAgICAgICAgIFsm
XSAoYXV0byYgc3BhY2VBbmRTZXQpIHsKICAgICAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBo
ZWFwSXRlcmF0aW9uU2NvcGUoKnRoaXMpOwotICAgICAgICAgICAgYXV0byYgc2V0ID0gc3BhY2VB
bmRTZXQuc2V0OworICAgICAgICAgICAgYXV0byYgc2V0ID0gc3BhY2VBbmRTZXQuY2xlYXJhYmxl
Q29kZVNldDsKICAgICAgICAgICAgIHNldC5mb3JFYWNoTGl2ZUNlbGwoCiAgICAgICAgICAgICAg
ICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKICAgICAgICAgICAgICAg
ICAgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PFNjcmlwdEV4
ZWN1dGFibGUqPihjZWxsKTsKQEAgLTI5MTcsNyArMjkyOCwxMiBAQCB2b2lkIEhlYXA6OmFkZENv
cmVDb25zdHJhaW50cygpCiAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBTZXRSb290
TWFya1JlYXNvblNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBSb290TWFya1JlYXNvbjo6RXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZXMpOwotICAgICAgICAgICAgICAgIGFkZChoZWFwLT5leGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyk7CisgICAgICAgICAgICAgICAgYWRk
KGhlYXAtPmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlQW5kU2V0Lm91dHB1dENvbnN0cmFpbnRzU2V0
KTsKKyAgICAgICAgICAgICAgICBhZGQoaGVhcC0+cHJvZ3JhbUV4ZWN1dGFibGVTcGFjZUFuZFNl
dC5vdXRwdXRDb25zdHJhaW50c1NldCk7CisgICAgICAgICAgICAgICAgaWYgKGhlYXAtPm1fZXZh
bEV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAgICAgICAgICAgYWRkKGhlYXAtPm1fZXZhbEV4
ZWN1dGFibGVTcGFjZS0+b3V0cHV0Q29uc3RyYWludHNTZXQpOworICAgICAgICAgICAgICAgIGlm
IChoZWFwLT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCisgICAgICAgICAgICAgICAg
ICAgIGFkZChoZWFwLT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UtPm91dHB1dENvbnN0
cmFpbnRzU2V0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChoZWFwLT5tX3dlYWtN
YXBTcGFjZSkgewogICAgICAgICAgICAgICAgIFNldFJvb3RNYXJrUmVhc29uU2NvcGUgcm9vdFNj
b3BlKHZpc2l0b3IsIFJvb3RNYXJrUmVhc29uOjpXZWFrTWFwU3BhY2UpOwpAQCAtMzE2OSwxOCAr
MzE4NSwxOCBAQCBGT1JfRUFDSF9KU0NfRFlOQU1JQ19JU09fU1VCU1BBQ0UoREVGSU5FX0RZTkFN
SUNfSVNPX1NVQlNQQUNFX01FTUJFUl9TTE9XKQogCiAjdW5kZWYgREVGSU5FX0RZTkFNSUNfSVNP
X1NVQlNQQUNFX01FTUJFUl9TTE9XCiAKLSNkZWZpbmUgREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5E
X1NFVF9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKKyNkZWZpbmUgREVG
SU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUs
IHR5cGUsIHNwYWNlVHlwZSkgXAogICAgIElzb1N1YnNwYWNlKiBIZWFwOjpuYW1lIyNTbG93KCkg
XAogICAgIHsgXAogICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAotICAgICAgICBhdXRvIHNw
YWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGhl
YXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8c3Bh
Y2VUeXBlPiBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAog
ICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBcCiAgICAgICAgIG1fIyNuYW1lID0gV1RG
TW92ZShzcGFjZSk7IFwKICAgICAgICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKICAgICB9
CiAKLURFRklORV9EWU5BTUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NMT1coZXZhbEV4ZWN1dGFi
bGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFibGUpIC8v
IEhhc2g6MHg5NThlM2U5ZAotREVGSU5FX0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xP
Vyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY1MDZmYTNjCitERUZJTkVf
RFlOQU1JQ19TUEFDRV9BTkRfU0VUX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV2YWxFeGVjdXRhYmxlLCBIZWFwOjpTY3JpcHRF
eGVjdXRhYmxlU3BhY2VBbmRTZXQpIC8vIEhhc2g6MHg5NThlM2U5ZAorREVGSU5FX0RZTkFNSUNf
U1BBQ0VfQU5EX1NFVF9NRU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSwgSGVh
cDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0KSAvLyBIYXNoOjB4NjUwNmZhM2MKIAogI3Vu
ZGVmIERFRklORV9EWU5BTUlDX1NQQUNFX0FORF9TRVRfTUVNQkVSX1NMT1cKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCmluZGV4IGFmMGU0YzQ2YTZjZWE3MDZiY2IxYWVlYzQxMmYxOWQ1MWJi
NDgxNTIuLmZhZDg1OTk4ZWE0N2I5MjFkYzQ2YjU5MzMwMjU0MWUyYmZlM2I3YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTEyMCw3ICsxMjAsNiBAQCBjbGFzcyBIZWFwOwogICAg
IHYoZGF0ZUluc3RhbmNlU3BhY2UsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRGF0ZUluc3Rh
bmNlKSBcCiAgICAgdihkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZSwgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKSBcCiAgICAgdihleGNlcHRpb25TcGFjZSwg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXhjZXB0aW9uKSBcCi0gICAgdihleGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UpIFwKICAgICB2KGZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpT
RnVuY3Rpb24pIFwKICAgICB2KGdldHRlclNldHRlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBH
ZXR0ZXJTZXR0ZXIpIFwKICAgICB2KGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlLCBnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50KSBcCkBAIC0xMDI5LDEwICsxMDI4LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgRk9SX0VBQ0hf
SlNDX0RZTkFNSUNfSVNPX1NVQlNQQUNFKERFRklORV9EWU5BTUlDX0lTT19TVUJTUEFDRV9NRU1C
RVIpCiAjdW5kZWYgREVGSU5FX0RZTkFNSUNfSVNPX1NVQlNQQUNFX01FTUJFUgogICAgIAotICAg
IElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7Ci0g
ICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOwot
Ci0jZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKKyNk
ZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobmFtZSwgdHlwZSkgXAog
ICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKICAgICBJc29TdWJzcGFjZSogbmFt
ZSgpIFwKICAgICB7IFwKQEAgLTEwNDMsNyArMTAzOSw3IEBAIGNsYXNzIEhlYXAgewogICAgICAg
ICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCiAgICAgfSBcCiAgICAgSXNvU3Vic3BhY2UqIG5hbWUj
I1Nsb3coKTsgXAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGFjZUFuZFNldD4gbV8jI25hbWU7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPHR5cGU+IG1fIyNuYW1lOwogICAgIAogICAgIHN0cnVjdCBTcGFj
ZUFuZFNldCB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKQEAgLTEw
NjcsNyArMTA2Myw4IEBAIGNsYXNzIEhlYXAgewogICAgICAgICB9CiAgICAgfTsKIAotICAgIFNw
YWNlQW5kU2V0IGNvZGVCbG9ja1NwYWNlQW5kU2V0OworICAgIHVzaW5nIENvZGVCbG9ja1NwYWNl
QW5kU2V0ID0gU3BhY2VBbmRTZXQ7CisgICAgQ29kZUJsb2NrU3BhY2VBbmRTZXQgY29kZUJsb2Nr
U3BhY2VBbmRTZXQ7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9y
RWFjaENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCkBAIC0xMDc1LDEwICsxMDcyLDM5
IEBAIGNsYXNzIEhlYXAgewogICAgICAgICBmdW5jKGNvZGVCbG9ja1NwYWNlQW5kU2V0KTsKICAg
ICB9CiAKLSAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihldmFsRXhlY3V0
YWJsZVNwYWNlKQotICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCi0gICAgU3BhY2VBbmRTZXQgZnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2VBbmRTZXQ7Ci0gICAgU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZUFu
ZFNldDsKKyAgICBzdHJ1Y3QgU2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0IHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIElzb1N1YnNwYWNlIHNw
YWNlOworICAgICAgICBJc29DZWxsU2V0IGNsZWFyYWJsZUNvZGVTZXQ7CisgICAgICAgIElzb0Nl
bGxTZXQgb3V0cHV0Q29uc3RyYWludHNTZXQ7CisgICAgICAgIElzb0NlbGxTZXQgZmluYWxpemVy
U2V0OworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICAgICAg
U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAg
ICAgICAgICAgIDogc3BhY2Uoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikK
KyAgICAgICAgICAgICwgY2xlYXJhYmxlQ29kZVNldChzcGFjZSkKKyAgICAgICAgICAgICwgb3V0
cHV0Q29uc3RyYWludHNTZXQoc3BhY2UpCisgICAgICAgICAgICAsIGZpbmFsaXplclNldChzcGFj
ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIFNjcmlwdEV4ZWN1dGFi
bGVTcGFjZUFuZFNldCYgc2V0QW5kU3BhY2VGb3IoU3Vic3BhY2UmIHNwYWNlKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxTY3JpcHRFeGVjdXRhYmxlU3BhY2VB
bmRTZXQqPigKKyAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZzcGFjZSkgLQor
ICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRT
ZXQsIHNwYWNlKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgSXNvQ2VsbFNldCYgY2xl
YXJhYmxlQ29kZVNldEZvcihTdWJzcGFjZSYgc3BhY2UpIHsgcmV0dXJuIHNldEFuZFNwYWNlRm9y
KHNwYWNlKS5jbGVhcmFibGVDb2RlU2V0OyB9CisgICAgICAgIHN0YXRpYyBJc29DZWxsU2V0JiBv
dXRwdXRDb25zdHJhaW50c1NldEZvcihTdWJzcGFjZSYgc3BhY2UpIHsgcmV0dXJuIHNldEFuZFNw
YWNlRm9yKHNwYWNlKS5vdXRwdXRDb25zdHJhaW50c1NldDsgfQorICAgICAgICBzdGF0aWMgSXNv
Q2VsbFNldCYgZmluYWxpemVyU2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkgeyByZXR1cm4gc2V0QW5k
U3BhY2VGb3Ioc3BhY2UpLmZpbmFsaXplclNldDsgfQorICAgIH07CisKKyAgICBEWU5BTUlDX1NQ
QUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNwYWNlLCBTY3JpcHRFeGVj
dXRhYmxlU3BhY2VBbmRTZXQpCisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1C
RVIobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwgU2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5k
U2V0KQorICAgIFNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZUFuZFNldDsKKyAgICBTY3JpcHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1
dGFibGVTcGFjZUFuZFNldDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9p
ZCBmb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCkBAIC0xMDkx
LDcgKzExMTcsOCBAQCBjbGFzcyBIZWFwIHsKICAgICAgICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJs
ZVNwYWNlQW5kU2V0KTsKICAgICB9CiAKLSAgICBTcGFjZUFuZFNldCB1bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlQW5kU2V0OworICAgIHVzaW5nIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2VBbmRTZXQgPSBTcGFjZUFuZFNldDsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZVNwYWNlQW5kU2V0IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQ7CiAK
ICAgICBWZWN0b3I8SXNvU3Vic3BhY2VQZXJWTSo+IHBlclZNSXNvU3Vic3BhY2VzOwogI3VuZGVm
IERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29DZWxsU2V0LmgKaW5kZXggY2NiODQ1ZWExMWZiZWE4ZTJhZGNlNTY2MWJkZWE4YzIx
ZTlhMmE5Zi4uOGJkN2U3ZWE1YTk0MjNlYWVhYWMwZjk0OWMxMGM0YzFmMGJhN2NkMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaApAQCAtMjksNiArMjksOCBAQAogI2lu
Y2x1ZGUgPHd0Zi9CaXRtYXAuaD4KICNpbmNsdWRlIDx3dGYvQ29uY3VycmVudFZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisjaW5jbHVkZSA8d3RmL05vbm1vdmFibGUuaD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxM
aW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KIApAQCAtNDAsNyArNDIs
OSBAQCBjbGFzcyBJc29TdWJzcGFjZTsKIC8vIENyZWF0ZSBhIHNldCBvZiBjZWxscyB0aGF0IGFy
ZSBpbiBhbiBJc29TdWJzcGFjZS4gVGhpcyBhbGxvd3MgY29uY3VycmVudCBPKDEpIHNldCBpbnNl
cnRpb24gYW5kCiAvLyByZW1vdmFsLiBFYWNoIHN1Y2ggc2V0IHNob3VsZCBiZSB0aG91Z2h0IG9m
IGFzIGEgMC44JSBpbmNyZWFzZSBpbiBvYmplY3Qgc2l6ZSBmb3Igb2JqZWN0cyBpbiB0aGF0CiAv
LyBJc29TdWJzcGFjZSAoaXQncyBsaWtlIGFkZGluZyAxIGJpdCBldmVyeSAxNiBieXRlcywgb3Ig
MSBiaXQgZXZlcnkgMTI4IGJpdHMpLgotY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBQYWNrZWRS
YXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4geworY2xhc3MgSXNvQ2VsbFNldCBmaW5hbCA6IHB1
YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4geworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKElzb0NlbGxTZXQpOworICAgIFdURl9NQUtFX05PTk1PVkFCTEUoSXNvQ2VsbFNl
dCk7CiBwdWJsaWM6CiAgICAgSXNvQ2VsbFNldChJc29TdWJzcGFjZSYgc3Vic3BhY2UpOwogICAg
IH5Jc29DZWxsU2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZjEyMzU1Nzgy
MGMzNGY4NzYyYzE4YTk1MDNmM2E5NmY3YjRjNjQxMi4uZWQ4ZmIwZjUzZTU3YTVhNTAyZjFjYTI3
NjA1NDY3MDkwMGU4YmU5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE1LDgg
KzIxNSw2IEBAIHZvaWQgSklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BS
UmVnIHJlc3VsdCkKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVj
dXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpKSwgcmVzdWx0KTsKICAgICBl
bHNlCiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxsKCkpLCByZXN1bHQpOwotCi0gICAgbG9hZFB0cihBZGRy
ZXNzKHJlc3VsdCwgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6b2Zmc2V0T2ZDb2RlQmxvY2so
KSksIHJlc3VsdCk7CiAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlc3VsdCwgQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggM2Uy
YzZkZjYwYTQ3OGNhMTA5YWFkYThjMzNkNjBjOTk0YjVkM2MwMS4uMWZkYjRhNTdkNTk0YmVlYTZl
YmI4MGFhNjk3YmRhZDQzZjkwZjg3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTQ5Myw3ICsxNDkzLDYgQEAgbWFj
cm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQogICAgIGxv
YWRwIChGdW5jdGlvblJhcmVEYXRhOjptX2V4ZWN1dGFibGUgLSAoY29uc3RleHByIEpTRnVuY3Rp
b246OnJhcmVEYXRhVGFnKSlbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgogLmlzRXhl
Y3V0YWJsZToKICAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2Fs
bFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgbG9hZHAgRXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZTo6bV9jb2RlQmxvY2tbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3Rl
cgogZW5kCiAKIG1hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdl
dFJlZ2lzdGVyKQpAQCAtMTUwNyw3ICsxNTA2LDYgQEAgbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCiAgICAgbG9hZHAgKEZ1bmN0aW9uUmFy
ZURhdGE6Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcp
KVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCiAuaXNFeGVjdXRhYmxlOgogICAgIGxv
YWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVn
aXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGxvYWRwIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2U6Om1fY29kZUJsb2NrW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKIGVuZAogCiBt
YWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNw
cAppbmRleCBjYTAwZmIxYzZiNmRhNjk3NmZjYjE2ZTE2N2VmNjgyNDE2ZTE3MTYwLi45ZDY4NWE3
NTJjNjVmODViNTU4NmRmOGU1MzAwZDBhY2U2M2Q2YTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC02Myw3
ICs2Myw3IEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldCh2
bSwgZXhlY3V0YWJsZSwgdW5saW5rZWRFdmFsQ29kZSk7CisgICAgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZENvZGVCbG9jay5zZXQodm0sIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUpOwogCiAg
ICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggZGQ4NDkzMzgyZmY2MTQxMGJiZWVlZGQwYmJl
Mjc3ZGM1MjA4ZTYyZi4uYjg4NDljY2UxMTU3YzZkMWUzNDFlYWVmZGZhMWY0MWI4YzJlZjEwMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNw
cApAQCAtNTYsOCArNTYsNiBAQCB2b2lkIEV2YWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1w
bChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgRXZhbEV4ZWN1dGFibGUqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihjZWxsKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX3VubGlua2VkRXZhbENvZGVCbG9jayk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9ldmFsQ29kZUJsb2NrKTsKICAgICBpZiAoVGVtcGxhdGVPYmplY3RNYXAqIG1hcCA9IHRo
aXNPYmplY3QtPm1fdGVtcGxhdGVPYmplY3RNYXAuZ2V0KCkpIHsKICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IHRoaXNPYmplY3QtPmNlbGxMb2NrKCkgfTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRy
eSA6ICptYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFs
RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFi
bGUuaAppbmRleCA2NjMwNTRmYTU2N2IzZGFmYmYxMDNkMjg1OTczYWNkODE1NGJkMjc2Li5lODVh
M2E3YTM1ZmVmY2IzYTY2MmIwZmYwYzg0ZGQwYWExMjg5OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgiCiAj
aW5jbHVkZSAiR2xvYmFsRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlVubGlua2VkRXZhbENvZGVC
bG9jay5oIgogCkBAIC0zOSw5ICszOCwxNCBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1Ymxp
YyBHbG9iYWxFeGVjdXRhYmxlIHsKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CiAgICAgCi0gICAgRXZhbENvZGVCbG9jayogY29kZUJsb2NrKCkKKyAgICBFdmFsQ29kZUJsb2Nr
KiBjb2RlQmxvY2soKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxF
dmFsQ29kZUJsb2NrKj4oRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dW53cmFwKG1fZXZhbENv
ZGVCbG9jay5nZXQoKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEV2YWxDb2RlQmxv
Y2sqPihCYXNlOjpjb2RlQmxvY2soKSk7CisgICAgfQorCisgICAgVW5saW5rZWRFdmFsQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PFVubGlua2VkRXZhbENvZGVCbG9jayo+KEJhc2U6OnVubGlua2VkQ29kZUJsb2Nr
KCkpOwogICAgIH0KIAogICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKQEAgLTYy
LDEwICs2NiwxMCBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBHbG9iYWxFeGVjdXRh
YmxlIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygp
IHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQotICAg
IHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7IH0KLSAg
ICB1bnNpZ25lZCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2Vk
RXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KLSAgICBib29sIGFsbG93
RGlyZWN0RXZhbENhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2st
PmFsbG93RGlyZWN0RXZhbENhY2hlKCk7IH0KKyAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7
IHJldHVybiB1bmxpbmtlZENvZGVCbG9jaygpLT5udW1WYXJpYWJsZXMoKTsgfQorICAgIHVuc2ln
bmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gdW5saW5rZWRDb2Rl
QmxvY2soKS0+bnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKTsgfQorICAgIHVuc2lnbmVk
IG51bVRvcExldmVsRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrKCkt
Pm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CisgICAgYm9vbCBhbGxvd0RpcmVjdEV2YWxDYWNo
ZSgpIGNvbnN0IHsgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrKCktPmFsbG93RGlyZWN0RXZhbENh
Y2hlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyPihtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsgfQogICAgIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQpOyB9CiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFw
KFZNJik7CkBAIC04Miw4ICs4Niw2IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVibGljIEds
b2JhbEV4ZWN1dGFibGUgewogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgOiAxOwogICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogCi0g
ICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fZXZhbENvZGVCbG9j
azsKLSAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRFdmFsQ29kZUJsb2NrPiBtX3VubGlua2VkRXZh
bENvZGVCbG9jazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplY3RNYXA+IG1fdGVt
cGxhdGVPYmplY3RNYXA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBkODFhYzYwNmY3NGQ4NTJiOGRiZWU5
M2RkZDU2NzY1OGJlMDc0OTk0Li5jN2VlMTQ5MDg3Zjc4ZjhiYzg4MTE4ZGE3YmI0MDkzOTE4YTli
NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKQEAgLTI0LDEwICsyNCwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKIAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRnVuY3Rp
b25FeGVjdXRhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uT3ZlcnJpZGVzLmgiCisj
aW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTU1LDI3ICs1OCwzMyBAQCB2b2lkIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAKIEZ1bmN0aW9uQ29kZUJsb2NrKiBG
dW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKIHsKLSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBlZGdlOworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICBpZiAoa2luZCA9PSBDb2RlRm9y
Q2FsbCkKLSAgICAgICAgZWRnZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC5nZXQoKTsKKyAgICAgICAg
Y29kZUJsb2NrID0gY29kZUJsb2NrRm9yQ2FsbCgpOwogICAgIGVsc2UgewogICAgICAgICBSRUxF
QVNFX0FTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgICAgICBlZGdlID0gbV9j
b2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCk7CisgICAgICAgIGNvZGVCbG9jayA9IGNvZGVCbG9j
a0ZvckNvbnN0cnVjdCgpOwogICAgIH0KLSAgICBpZiAoIWVkZ2UpCisgICAgaWYgKCFjb2RlQmxv
Y2spCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5j
dGlvbkNvZGVCbG9jayo+KGVkZ2UtPmNvZGVCbG9jaygpLT5iYXNlbGluZUFsdGVybmF0aXZlKCkp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KGNvZGVCbG9jay0+
YmFzZWxpbmVBbHRlcm5hdGl2ZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4K
K3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRLZWVwSW5Db25zdHJhaW50U2V0KFZpc2l0b3ImIHZp
c2l0b3IsIENvZGVCbG9jayogY29kZUJsb2NrRm9yQ2FsbCwgQ29kZUJsb2NrKiBjb2RlQmxvY2tG
b3JDb25zdHJ1Y3QpCit7CisgICAgLy8gSWYgZWl0aGVyIG9mIENvZGVCbG9ja3MgaXMgbm90IG1h
cmtlZCB5ZXQsIHdlIHdpbGwgcnVuIG91dHB1dC1jb25zdHJhaW50cy4KKyAgICByZXR1cm4gKGNv
ZGVCbG9ja0ZvckNhbGwgJiYgIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrRm9yQ2FsbCkpIHx8
IChjb2RlQmxvY2tGb3JDb25zdHJ1Y3QgJiYgIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrRm9y
Q29uc3RydWN0KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CiB2b2lkIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2
aXNpdG9yKQogeworICAgIFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsKICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV90b3BMZXZlbEV4ZWN1dGFibGUpOwotICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ2FsbCk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fdW5saW5rZWRFeGVjdXRhYmxlKTsKICAgICBpZiAoUmFyZURhdGEqIHJhcmVE
YXRhID0gdGhpc09iamVjdC0+bV9yYXJlRGF0YS5nZXQoKSkgewogICAgICAgICB2aXNpdG9yLmFw
cGVuZChyYXJlRGF0YS0+bV9jYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmVJRCk7CkBAIC04NiwxMCAr
OTUsNDMgQEAgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2Vs
bCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZChlbnRyeS52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBTaW5jZSBGdW5jdGlv
bkV4ZWN1dGFibGUncyBmaW5hbGl6ZXIgYWx3YXlzIG5lZWRzIHRvIGJlIHJ1biwgd2UgZG8gbm90
IHRyYWNrIEZ1bmN0aW9uRXhlY3V0YWJsZSB2aWEgZmluYWxpemVyU2V0LgorICAgIGF1dG8qIGNv
ZGVCbG9ja0ZvckNhbGwgPSB0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCk7Cisg
ICAgaWYgKGNvZGVCbG9ja0ZvckNhbGwpCisgICAgICAgIHZpc2l0Q29kZUJsb2NrRWRnZSh2aXNp
dG9yLCBjb2RlQmxvY2tGb3JDYWxsKTsKKyAgICBhdXRvKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3Qg
PSB0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKTsKKyAgICBpZiAoY29k
ZUJsb2NrRm9yQ29uc3RydWN0KQorICAgICAgICB2aXNpdENvZGVCbG9ja0VkZ2UodmlzaXRvciwg
Y29kZUJsb2NrRm9yQ29uc3RydWN0KTsKKworICAgIGlmIChzaG91bGRLZWVwSW5Db25zdHJhaW50
U2V0KHZpc2l0b3IsIGNvZGVCbG9ja0ZvckNhbGwsIGNvZGVCbG9ja0ZvckNvbnN0cnVjdCkpCisg
ICAgICAgIHZtLmhlYXAuZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2VBbmRTZXQub3V0cHV0Q29uc3Ry
YWludHNTZXQuYWRkKHRoaXNPYmplY3QpOwogfQogCiBERUZJTkVfVklTSVRfQ0hJTERSRU4oRnVu
Y3Rpb25FeGVjdXRhYmxlKTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgRnVu
Y3Rpb25FeGVjdXRhYmxlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbChKU0NlbGwqIGNlbGws
IFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgVk0mIHZtID0gdmlzaXRvci52bSgpOworICAgIGF1
dG8qIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CisgICAg
YXV0byogY29kZUJsb2NrRm9yQ2FsbCA9IGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ2FsbC5n
ZXQoKTsKKyAgICBpZiAoY29kZUJsb2NrRm9yQ2FsbCkgeworICAgICAgICBpZiAoIXZpc2l0b3Iu
aXNNYXJrZWQoY29kZUJsb2NrRm9yQ2FsbCkpCisgICAgICAgICAgICBydW5Db25zdHJhaW50KE5v
TG9ja2luZ05lY2Vzc2FyeSwgdmlzaXRvciwgY29kZUJsb2NrRm9yQ2FsbCk7CisgICAgfQorICAg
IGF1dG8qIGNvZGVCbG9ja0ZvckNvbnN0cnVjdCA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvckNv
bnN0cnVjdCgpOworICAgIGlmIChjb2RlQmxvY2tGb3JDb25zdHJ1Y3QpIHsKKyAgICAgICAgaWYg
KCF2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9ja0ZvckNvbnN0cnVjdCkpCisgICAgICAgICAgICBy
dW5Db25zdHJhaW50KE5vTG9ja2luZ05lY2Vzc2FyeSwgdmlzaXRvciwgY29kZUJsb2NrRm9yQ29u
c3RydWN0KTsKKyAgICB9CisKKyAgICBpZiAoIXNob3VsZEtlZXBJbkNvbnN0cmFpbnRTZXQodmlz
aXRvciwgY29kZUJsb2NrRm9yQ2FsbCwgY29kZUJsb2NrRm9yQ29uc3RydWN0KSkKKyAgICAgICAg
dm0uaGVhcC5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZUFuZFNldC5vdXRwdXRDb25zdHJhaW50c1Nl
dC5yZW1vdmUoZXhlY3V0YWJsZSk7Cit9CisKK0RFRklORV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlO
VFMoRnVuY3Rpb25FeGVjdXRhYmxlKTsKKwogRnVuY3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgCiAg
ICAgSlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIHN0ZDo6b3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaApp
bmRleCAwYTkxMmFlNWVmNzJkMDE1OGViZDVjZWRjZTU2MjRiNjE1MTkyYWJlLi4zN2UwYzVkYjYx
YWNhNjQyZTVlZmRmNjg2MTJmMDIzMWM0NThmZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMjUsNyArMjUsNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0YWJsZS5oIgog
I2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKQEAgLTY5LDM0ICs2OCwzMSBAQCBjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgLy8gUmV0
dXJucyBlaXRoZXIgY2FsbCBvciBjb25zdHJ1Y3QgYnl0ZWNvZGUuIFRoaXMgY2FuIGJlIGFwcHJv
cHJpYXRlCiAgICAgLy8gZm9yIGFuc3dlcmluZyBxdWVzdGlvbnMgdGhhdCB0aGF0IGRvbid0IHZh
cnkgYmV0d2VlbiBjYWxsIGFuZCBjb25zdHJ1Y3QgLS0KICAgICAvLyBmb3IgZXhhbXBsZSwgYXJn
dW1lbnRzUmVnaXN0ZXIoKS4KLSAgICBGdW5jdGlvbkNvZGVCbG9jayogZWl0aGVyQ29kZUJsb2Nr
KCkKKyAgICBGdW5jdGlvbkNvZGVCbG9jayogZWl0aGVyQ29kZUJsb2NrKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2U7Ci0gICAgICAgIGlmICht
X2NvZGVCbG9ja0ZvckNhbGwpCi0gICAgICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tGb3JDYWxs
LmdldCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tGb3JD
b25zdHJ1Y3QuZ2V0KCk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2Rl
QmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAoZWRnZSkpOworICAgICAg
ICBpZiAoYXV0byogcmVzdWx0ID0gY29kZUJsb2NrRm9yQ2FsbCgpKQorICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIGNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpOwogICAg
IH0KICAgICAgICAgCiAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuICEhbV9jb2RlQmxvY2tGb3JDYWxsOworICAgICAgICByZXR1cm4gISFj
b2RlQmxvY2tGb3JDYWxsKCk7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVC
bG9ja0ZvckNhbGwoKQorICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDYWxsKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxv
Y2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9jb2RlQmxvY2tGb3JDYWxs
LmdldCgpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sq
PihtX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCkpOwogICAgIH0KIAogICAgIGJvb2wgaXNHZW5lcmF0
ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEhbV9jb2RlQmxv
Y2tGb3JDb25zdHJ1Y3Q7CisgICAgICAgIHJldHVybiAhIWNvZGVCbG9ja0ZvckNvbnN0cnVjdCgp
OwogICAgIH0KIAotICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3Qo
KQorICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnVud3JhcChtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5n
ZXQoKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4o
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCkpOwogICAgIH0KICAgICAgICAgCiAgICAgYm9v
bCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0xMjIsNiAr
MTE4LDggQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4
ZWN1dGFibGUgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAg
ICAgfQogCisgICAgRnVuY3Rpb25Db2RlQmxvY2sqIHJlcGxhY2VDb2RlQmxvY2tXaXRoKFZNJiwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCwgQ29kZUJsb2NrKik7CisKICAgICBSZWZQdHI8VHlwZVNl
dD4gcmV0dXJuU3RhdGVtZW50VHlwZVNldCgpIAogICAgIHsKICAgICAgICAgUmFyZURhdGEmIHJh
cmVEYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKQEAgLTE2Miw2ICsxNjAsNyBAQCBjbGFzcyBGdW5j
dGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgU291
cmNlQ29kZSBjbGFzc1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxl
LT5jbGFzc1NvdXJjZSgpOyB9CiAKICAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOworICAgIERF
Q0xBUkVfVklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG8pCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKQEAgLTMzMSw4ICszMzAsOCBAQCBjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwogICAgIFdyaXRlQmFycmllcjxTY3JpcHRFeGVj
dXRhYmxlPiBtX3RvcExldmVsRXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU+IG1fdW5saW5rZWRFeGVjdXRhYmxlOwotICAgIFdyaXRlQmFycmll
cjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX2NvZGVCbG9ja0ZvckNhbGw7Ci0gICAgV3Jp
dGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0OworICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKKyAg
ICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKICAgICBJ
bmZlcnJlZFZhbHVlPEpTRnVuY3Rpb24+IG1fc2luZ2xldG9uOwogICAgIEJveDxJbmxpbmVXYXRj
aHBvaW50U2V0PiBtX3BvbHlQcm90b1dhdGNocG9pbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oCmlu
ZGV4IGM5YTBiMTIyNDA0MzMyOTcxYTE2YzI4YTZkMTVmNTRlZjNmNTBkOGMuLjJhZmRmOGNjYTFh
NGM3OWRhODg5NzJhNmRkNTM2NTEyMzQ2ODI1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgKQEAgLTI3
LDE1ICsyNywzMiBAQAogCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVk
ZSAiSW5mZXJyZWRWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRhYmxlSW5s
aW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogaW5saW5lIHZvaWQgRnVuY3Rpb25FeGVjdXRh
YmxlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCiB7CiAgICAgbV9zaW5nbGV0b24u
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkodm0pOworICAgIGZpbmFsaXplQ29kZUJsb2NrRWRnZSh2
bSwgbV9jb2RlQmxvY2tGb3JDYWxsKTsKKyAgICBmaW5hbGl6ZUNvZGVCbG9ja0VkZ2Uodm0sIG1f
Y29kZUJsb2NrRm9yQ29uc3RydWN0KTsKKyAgICB2bS5oZWFwLmZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlQW5kU2V0Lm91dHB1dENvbnN0cmFpbnRzU2V0LnJlbW92ZSh0aGlzKTsKIH0KIAotSlNTdHJp
bmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK2lubGluZSBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpyZXBs
YWNlQ29kZUJsb2NrV2l0aChWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgQ29k
ZUJsb2NrKiBuZXdDb2RlQmxvY2spCit7CisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsK
KyAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIG9sZENvZGVCbG9jayA9IGNvZGVCbG9ja0ZvckNh
bGwoKTsKKyAgICAgICAgbV9jb2RlQmxvY2tGb3JDYWxsLnNldE1heUJlTnVsbCh2bSwgdGhpcywg
bmV3Q29kZUJsb2NrKTsKKyAgICAgICAgcmV0dXJuIG9sZENvZGVCbG9jazsKKyAgICB9CisgICAg
QVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgRnVuY3Rpb25Db2RlQmxvY2sq
IG9sZENvZGVCbG9jayA9IGNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpOworICAgIG1fY29kZUJsb2Nr
Rm9yQ29uc3RydWN0LnNldE1heUJlTnVsbCh2bSwgdGhpcywgbmV3Q29kZUJsb2NrKTsKKyAgICBy
ZXR1cm4gb2xkQ29kZUJsb2NrOworfQorCitpbmxpbmUgSlNTdHJpbmcqIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBSYXJl
RGF0YSYgcmFyZURhdGEgPSBlbnN1cmVSYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURhdGEubV9h
c1N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2Jh
bEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhl
Y3V0YWJsZS5jcHAKaW5kZXggNzVlODRiMzhmZjcyN2IzMmM4ZWIwMDExNmEwYjFkMGFkODQwYmZl
ZC4uZjI5MmZjNjRkNTA3ZjQ5YWMyZDA5NGU1NTU0MDU3MmMzZDEwMTg1YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5jcHAKQEAgLTI2
LDEwICsyNiw2MiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdsb2JhbEV4ZWN1
dGFibGUuaCIKIAorI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlND
ZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGFibGVJbmxpbmVzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gR2xvYmFsRXhlY3V0YWJsZTo6c19pbmZv
ID0geyAiR2xvYmFsRXhlY3V0YWJsZSJfcywgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHbG9iYWxFeGVjdXRhYmxlKSB9OwogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBWaXNpdG9yPgordm9pZCBHbG9iYWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1w
bChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogZXhlY3V0YWJs
ZSA9IGpzQ2FzdDxHbG9iYWxFeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhleGVjdXRhYmxlLCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
ZXhlY3V0YWJsZSwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoZXhlY3V0YWJsZS0+bV91
bmxpbmtlZENvZGVCbG9jayk7CisKKyAgICBpZiAoYXV0byogY29kZUJsb2NrID0gZXhlY3V0YWJs
ZS0+Y29kZUJsb2NrKCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIENvZGVCbG9ja3MgaXMgbm90IG1h
cmtlZCB5ZXQsIHdlIHdpbGwgcnVuIG91dHB1dC1jb25zdHJhaW50cy4KKyAgICAgICAgLy8gV2Ug
bWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0LCB3aGVuZXZlciB3ZSBzZWUgdW5tYXJrZWQgQ29k
ZUJsb2NrLCB0aGVuIHdlIG11c3QgcnVuIGZpbmFsaXplci4KKyAgICAgICAgLy8gQW5kIHdoZW5l
dmVyIHdlIHNldCBhIGJpdCBvbiBvdXRwdXRDb25zdHJhaW50c1NldCwgd2UgbXVzdCBhbHJlYWR5
IHNldCBhIGJpdCBpbiBmaW5hbGl6ZXJTZXQuCisgICAgICAgIHZpc2l0Q29kZUJsb2NrRWRnZSh2
aXNpdG9yLCBjb2RlQmxvY2spOworICAgICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJs
b2NrKSkgeworICAgICAgICAgICAgSGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0Ojpm
aW5hbGl6ZXJTZXRGb3IoKmV4ZWN1dGFibGUtPnN1YnNwYWNlKCkpLmFkZChleGVjdXRhYmxlKTsK
KyAgICAgICAgICAgIEhlYXA6OlNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6b3V0cHV0Q29u
c3RyYWludHNTZXRGb3IoKmV4ZWN1dGFibGUtPnN1YnNwYWNlKCkpLmFkZChleGVjdXRhYmxlKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworREVGSU5FX1ZJU0lUX0NISUxEUkVOKEdsb2JhbEV4ZWN1
dGFibGUpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgordm9pZCBHbG9iYWxFeGVjdXRh
YmxlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgYXV0byogZXhlY3V0YWJsZSA9IGpzQ2FzdDxHbG9iYWxFeGVjdXRhYmxl
Kj4oY2VsbCk7CisgICAgaWYgKENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+Y29k
ZUJsb2NrKCkpIHsKKyAgICAgICAgaWYgKCF2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCisg
ICAgICAgICAgICBydW5Db25zdHJhaW50KE5vTG9ja2luZ05lY2Vzc2FyeSwgdmlzaXRvciwgY29k
ZUJsb2NrKTsKKyAgICAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrKSkKKyAgICAg
ICAgICAgIEhlYXA6OlNjcmlwdEV4ZWN1dGFibGVTcGFjZUFuZFNldDo6b3V0cHV0Q29uc3RyYWlu
dHNTZXRGb3IoKmV4ZWN1dGFibGUtPnN1YnNwYWNlKCkpLnJlbW92ZShleGVjdXRhYmxlKTsKKyAg
ICB9Cit9CisKK0RFRklORV9WSVNJVF9PVVRQVVRfQ09OU1RSQUlOVFMoR2xvYmFsRXhlY3V0YWJs
ZSk7CisKK0NvZGVCbG9jayogR2xvYmFsRXhlY3V0YWJsZTo6cmVwbGFjZUNvZGVCbG9ja1dpdGgo
Vk0mIHZtLCBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jaykKK3sKKyAgICBDb2RlQmxvY2sqIG9sZENv
ZGVCbG9jayA9IGNvZGVCbG9jaygpOworICAgIG1fY29kZUJsb2NrLnNldE1heUJlTnVsbCh2bSwg
dGhpcywgbmV3Q29kZUJsb2NrKTsKKyAgICByZXR1cm4gb2xkQ29kZUJsb2NrOworfQorCit2b2lk
IEdsb2JhbEV4ZWN1dGFibGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sKKyAg
ICBmaW5hbGl6ZUNvZGVCbG9ja0VkZ2Uodm0sIG1fY29kZUJsb2NrKTsKKyAgICBIZWFwOjpTY3Jp
cHRFeGVjdXRhYmxlU3BhY2VBbmRTZXQ6Om91dHB1dENvbnN0cmFpbnRzU2V0Rm9yKCpzdWJzcGFj
ZSgpKS5yZW1vdmUodGhpcyk7CisgICAgSGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0
OjpmaW5hbGl6ZXJTZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
bG9iYWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxF
eGVjdXRhYmxlLmgKaW5kZXggOTI3NGM5Y2QzZDZkMjEyYmE4YjY1NmJhM2M4MjAzMDUxNTU2MGI1
NC4uM2QxZGU5ZTBhY2Y1ODZiNTEyYzFmY2ZlMzdmYmQ5ZTFiZjE0Yzk3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuaApAQCAtMjUsNyAr
MjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtNDgsMTIgKzQ3LDMyIEBAIGNsYXNzIEdsb2JhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2Ny
aXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIEFTU0VSVChlbmRDb2x1bW4gIT0gVUlOVF9NQVgpOwog
ICAgIH0KIAorICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CisgICAgREVDTEFSRV9WSVNJVF9P
VVRQVVRfQ09OU1RSQUlOVFM7CisKKyAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZN
Jik7CisKIHByb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKICAg
ICBHbG9iYWxFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0
LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250
ZXh0VHlwZSwgSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgOiBCYXNlKHN0cnVjdHVyZSwg
dm0sIHNvdXJjZUNvZGUsIGlzSW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUxleGljYWxGZWF0
dXJlIDogTm9MZXhpY2FsRmVhdHVyZXMsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNJbkFycm93RnVu
Y3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwg
aW50cmluc2ljKQogICAgIHsKICAgICB9CiAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2suZ2V0KCk7CisgICAgfQorCisg
ICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3VubGlua2VkQ29kZUJsb2NrLmdldCgpOworICAgIH0KKworICAgIENv
ZGVCbG9jayogcmVwbGFjZUNvZGVCbG9ja1dpdGgoVk0mLCBDb2RlQmxvY2sqKTsKKworICAgIFdy
aXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOworICAgIFdyaXRlQmFycmllcjxVbmxp
bmtlZENvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9jazsKICAgICBpbnQgbV9sYXN0TGluZSB7
IC0xIH07CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW4geyBVSU5UX01BWCB9OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZS5jcHAKaW5kZXggNWJjNTg4MmIwMDJjMjg1NjY1MzUyNmM0MDRkZDljZjE1NDQ1NjVjNi4u
ZTllMWRlMzVhMDViM2I0YzMzODY3N2Y1YzU2ODMxOTIzOGY4ODljNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgaW5saW5lIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGly
ZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZUltcGwoSlNHbG9iYWxPYmplY3QKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxDb2Rl
QmxvY2suc2V0KHZtLCBleGVjdXRhYmxlLCB1bmxpbmtlZEV2YWxDb2RlKTsKKyAgICBleGVjdXRh
YmxlLT5tX3VubGlua2VkQ29kZUJsb2NrLnNldCh2bSwgZXhlY3V0YWJsZSwgdW5saW5rZWRFdmFs
Q29kZSk7CiAKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggYTM3NmFmNWVlYTBkZTZiNTE3MGM0ZmI0
NDczNzMwZDI1ODMzMWM1Mi4uYzliNzE2MDcwYmJmZDBhYTBiNGI3Y2M0ZWUyYWI4NzViZTlmNTRl
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDYXRjaFNjb3BlLmgiCiAjaW5jbHVkZSAiQ29tbW9u
SWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJGdW5jdGlv
bkV4ZWN1dGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4
IGFiN2JlY2Q5YzY3YTA4YzJmZTI1OGY3ZGI5MTA1NGYyYmFkNzlkMTEuLjA4MTBlMWQyZDE2NTMw
ZDBkODYyNTRkMDBjMzQ3NWY2ZTFhNDU4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgU3luY2hyb25v
dXNuZXNzIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgc2NyaXAKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBTeW5jaHJvbm91
c25lc3M6OlN5bmMpOwogICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0KHZtLCB0aGlz
LCBleGVjdXRhYmxlKTsKIAotICAgIHJldHVybiBleGVjdXRhYmxlLT51bmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2soKS0+aXNBc3luYygpID8gU3luY2hyb25vdXNuZXNzOjpBc3luYyA6IFN5
bmNocm9ub3VzbmVzczo6U3luYzsKKyAgICByZXR1cm4gZXhlY3V0YWJsZS0+dW5saW5rZWRDb2Rl
QmxvY2soKS0+aXNBc3luYygpID8gU3luY2hyb25vdXNuZXNzOjpBc3luYyA6IFN5bmNocm9ub3Vz
bmVzczo6U3luYzsKIH0KIAogdm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJh
dGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0y
MDksNyArMjA5LDcgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlv
bnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTW9kdWwKICAgICAvLyBzZWN0aW9uIDE1
LjIuMS4xNi40IHN0ZXAgMTYtYS1pdi4KICAgICAvLyBJbml0aWFsaXplIGhlYXAgYWxsb2NhdGVk
IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KICAgICAvLyBUaGV5IGNhbiBiZSBjYWxsZWQgYmVmb3Jl
IHRoZSBib2R5IG9mIHRoZSBtb2R1bGUgaXMgZXhlY3V0ZWQgdW5kZXIgY2lyY3VsYXIgZGVwZW5k
ZW5jaWVzLgotICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2sgPSBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKCk7CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9jayA9IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9jaygpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwLCBudW1iZXJPZkZ1bmN0aW9ucyA9IHVubGlua2VkQ29kZUJs
b2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgaSA8IG51bWJlck9mRnVuY3Rpb25zOyArK2kp
IHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAg
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQodW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUtPm5hbWUoKS5pbXBsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCmluZGV4IDI0N2Zh
YTY1ZWJjZTZlYTM5NDc2Y2MyNmVmNGQyZTUyNmQ1OWU1NjguLjgxMmMxYzc1YTU1MmQ1YjZjOTJl
Y2Q2M2U0NDk1MTUxZDY0YmE3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHAKQEAgLTYyLDcgKzYyLDcg
QEAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suc2V0
KGdsb2JhbE9iamVjdC0+dm0oKSwgZXhlY3V0YWJsZSwgdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZSk7CisgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jay5zZXQoZ2xvYmFsT2JqZWN0
LT52bSgpLCBleGVjdXRhYmxlLCB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlKTsKIAogICAgIGV4
ZWN1dGFibGUtPm1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5zZXQoZ2xvYmFsT2JqZWN0
LT52bSgpLCBleGVjdXRhYmxlLCBqc0Nhc3Q8U3ltYm9sVGFibGUqPih1bmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlLT5jb25zdGFudFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcih1bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlLT5tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rl
ck9mZnNldCgpKSkuZ2V0KCkpLT5jbG9uZVNjb3BlUGFydChnbG9iYWxPYmplY3QtPnZtKCkpKTsK
IApAQCAtODUsOSArODUsNyBAQCB2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENo
aWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVu
dFN5bWJvbFRhYmxlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZVBy
b2dyYW1Db2RlQmxvY2spOwogICAgIGlmIChUZW1wbGF0ZU9iamVjdE1hcCogbWFwID0gdGhpc09i
amVjdC0+bV90ZW1wbGF0ZU9iamVjdE1hcC5nZXQoKSkgewogICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgdGhpc09iamVjdC0+Y2VsbExvY2soKSB9OwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
Km1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IDkyNjM1YjMyMjFiMmM1NDE0YWNhNzZkMThiOThlOGIx
YWM4ZGVhMTUuLjM5YzJhYTk0YjJjZTQ5NzBiNzVjZTgwYWJjOTUyOWM2Mjg5MzlmODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRlICJHbG9iYWxFeGVjdXRhYmxl
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDYsOSArNDUsMTQgQEAgY2xhc3MgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayogY29kZUJsb2NrKCkKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKj4oRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dW53cmFwKG1fbW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jay5nZXQoKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqPihCYXNlOjpjb2RlQmxvY2soKSk7CisgICAgfQorCisgICAgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaygpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayo+KEJhc2U6OnVubGlua2VkQ29kZUJsb2NrKCkpOwogICAgIH0KIAogICAgIFJlZjxKSVRD
b2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKQEAgLTYzLDcgKzY3LDYgQEAgY2xhc3MgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAKICAgICBE
RUNMQVJFX0lORk87CiAKLSAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrLmdldCgpOyB9CiAgICAgYm9vbCBpc0FzeW5jKCkgY29uc3QgeyByZXR1cm4g
ZmVhdHVyZXMoKSAmIEF3YWl0RmVhdHVyZTsgfQogCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVu
dmlyb25tZW50U3ltYm9sVGFibGUoKSB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9s
VGFibGUuZ2V0KCk7IH0KQEAgLTc4LDkgKzgxLDcgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUgZmluYWwgOiBwdWJsaWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAKICAgICBERUNMQVJFX1ZJ
U0lUX0NISUxEUkVOOwogCi0gICAgV3JpdGVCYXJyaWVyPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jaz4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiAgICAgV3JpdGVCYXJy
aWVyPFN5bWJvbFRhYmxlPiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGU7Ci0gICAgV3Jp
dGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fbW9kdWxlUHJvZ3JhbUNvZGVC
bG9jazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplY3RNYXA+IG1fdGVtcGxhdGVP
YmplY3RNYXA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9ncmFtRXhlY3V0YWJsZS5jcHAKaW5kZXggNzMyOWZlMjcwMTg2ODRhYjA1YzZhNDc3NmZhZDI5
NmU1ODI4OWQ2Yy4uY2U4MjQyZjk4MzVmYjYzY2FiZmExNDc3ZGU5YTIyM2ZiMGFmOTgxOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
LmNwcApAQCAtMTUwLDggKzE1MCw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5p
dGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAg
fQogICAgIH0KIAotCi0gICAgbV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suc2V0KHZtLCB0aGlz
LCB1bmxpbmtlZENvZGVCbG9jayk7CisgICAgbV91bmxpbmtlZENvZGVCbG9jay5zZXQodm0sIHRo
aXMsIHVubGlua2VkQ29kZUJsb2NrKTsKIAogICAgIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
IG9wdGltaXplcih2bSwgZ2xvYmFsT2JqZWN0KTsKIApAQCAtMjE2LDggKzIxNSw2IEBAIHZvaWQg
UHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRv
ciYgdmlzaXRvcikKICAgICBQcm9ncmFtRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxQ
cm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb2dyYW1D
b2RlQmxvY2spOwogICAgIGlmIChUZW1wbGF0ZU9iamVjdE1hcCogbWFwID0gdGhpc09iamVjdC0+
bV90ZW1wbGF0ZU9iamVjdE1hcC5nZXQoKSkgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdGhp
c09iamVjdC0+Y2VsbExvY2soKSB9OwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogKm1hcCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRh
YmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5o
CmluZGV4IDUxMzQ5OTAyMDQwNzgxM2M1OWUzMjg4YTE4ZGYyOWJjMTExYmZlYzIuLjQzOTRlN2Zm
Y2I2OGIyMTUxN2M4OWNjYWIyOGE4MzU2NWY5MmFjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtMjUsNyArMjUsNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIK
ICNpbmNsdWRlICJHbG9iYWxFeGVjdXRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTYs
OSArNTUsMTQgQEAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgR2xvYmFs
RXhlY3V0YWJsZSB7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAg
UHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrKCkKKyAgICBQcm9ncmFtQ29kZUJsb2NrKiBjb2Rl
QmxvY2soKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQcm9ncmFt
Q29kZUJsb2NrKj4oRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dW53cmFwKG1fcHJvZ3JhbUNv
ZGVCbG9jay5nZXQoKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFByb2dyYW1Db2Rl
QmxvY2sqPihCYXNlOjpjb2RlQmxvY2soKSk7CisgICAgfQorCisgICAgVW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayo+KEJhc2U6OnVubGlua2Vk
Q29kZUJsb2NrKCkpOwogICAgIH0KIAogICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2Rl
KCkKQEAgLTgzLDggKzg3LDYgQEAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAKICAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOwogCi0g
ICAgV3JpdGVCYXJyaWVyPFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4gbV91bmxpbmtlZFByb2dy
YW1Db2RlQmxvY2s7Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+
IG1fcHJvZ3JhbUNvZGVCbG9jazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplY3RN
YXA+IG1fdGVtcGxhdGVPYmplY3RNYXA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IGM2YTllYWI2NzE0Y2U0MmM0
MTA4N2JkYjA4ZmM5MjE3NGFjOGVjYmYuLjljMmViMzdmYTNkZTk5MzE0MzIxZmE5ZWFjZmFjNmVj
MDA5ZTFhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIK
ICNpbmNsdWRlICJFdmFsQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2su
aCIKKyNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR2xv
YmFsRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSklULmgiCkBAIC04NiwyMCArODcsMjAgQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpjbGVh
ckNvZGUoSXNvQ2VsbFNldCYgY2xlYXJhYmxlQ29kZVNldCkKICAgICB9CiAgICAgY2FzZSBFdmFs
RXhlY3V0YWJsZVR5cGU6IHsKICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBz
dGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBleGVjdXRhYmxlLT5t
X2V2YWxDb2RlQmxvY2suY2xlYXIoKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2
YWxDb2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2suY2xl
YXIoKTsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jay5jbGVhcigpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU6IHsK
ICAgICAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxQcm9n
cmFtRXhlY3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBleGVjdXRhYmxlLT5tX3Byb2dyYW1Db2Rl
QmxvY2suY2xlYXIoKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2suY2xlYXIoKTsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2suY2xlYXIoKTsK
KyAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jay5jbGVhcigpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGU6IHsK
ICAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2Fz
dDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBleGVjdXRhYmxlLT5t
X21vZHVsZVByb2dyYW1Db2RlQmxvY2suY2xlYXIoKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV91
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgZXhlY3V0YWJs
ZS0+bV9jb2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENv
ZGVCbG9jay5jbGVhcigpOwogICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZUVudmlyb25tZW50
U3ltYm9sVGFibGUuY2xlYXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTA4LDcgKzEw
OSw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6Y2xlYXJDb2RlKElzb0NlbGxTZXQmIGNsZWFy
YWJsZUNvZGVTZXQpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIEFTU0VSVCgmSGVhcDo6
U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSkgPT0gJmNsZWFyYWJsZUNvZGVTZXQpOwor
ICAgIEFTU0VSVCgmSGVhcDo6U2NyaXB0RXhlY3V0YWJsZVNwYWNlQW5kU2V0OjpjbGVhcmFibGVD
b2RlU2V0Rm9yKCpzdWJzcGFjZSgpKSA9PSAmY2xlYXJhYmxlQ29kZVNldCk7CiAgICAgY2xlYXJh
YmxlQ29kZVNldC5yZW1vdmUodGhpcyk7CiB9CiAKQEAgLTEzMSw4ICsxMzIsNyBAQCB2b2lkIFNj
cmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2bSwgQ29kZUJsb2NrKiBnZW5lcmljQ29k
ZUJsb2NrLCBDb2RlVHlwZQogICAgICAgICAKICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZv
ckNhbGwpOwogICAgICAgICAKLSAgICAgICAgb2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZUFuZFVud3JhcChleGVjdXRhYmxlLT5tX3Byb2dyYW1Db2Rl
QmxvY2suZ2V0KCkpOwotICAgICAgICBleGVjdXRhYmxlLT5tX3Byb2dyYW1Db2RlQmxvY2suc2V0
TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5kQWN0
aXZhdGUoY29kZUJsb2NrKSk7CisgICAgICAgIG9sZENvZGVCbG9jayA9IGV4ZWN1dGFibGUtPnJl
cGxhY2VDb2RlQmxvY2tXaXRoKHZtLCBjb2RlQmxvY2spOwogICAgICAgICBicmVhazsKICAgICB9
CiAKQEAgLTE0Miw4ICsxNDIsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2Rl
KFZNJiB2bSwgQ29kZUJsb2NrKiBnZW5lcmljQ29kZUJsb2NrLCBDb2RlVHlwZQogCiAgICAgICAg
IEFTU0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKIAotICAgICAgICBvbGRDb2RlQmxvY2sgPSBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFjdGl2YXRlQW5kVW53cmFwKGV4ZWN1dGFibGUt
Pm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1f
bW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5zZXRNYXlCZU51bGwodm0sIHRoaXMsIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3RpdmF0ZShjb2RlQmxvY2spKTsKKyAgICAgICAgb2xk
Q29kZUJsb2NrID0gZXhlY3V0YWJsZS0+cmVwbGFjZUNvZGVCbG9ja1dpdGgodm0sIGNvZGVCbG9j
ayk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTUzLDggKzE1Miw3IEBAIHZvaWQgU2Ny
aXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUoVk0mIHZtLCBDb2RlQmxvY2sqIGdlbmVyaWNDb2Rl
QmxvY2ssIENvZGVUeXBlCiAgICAgICAgIAogICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9y
Q2FsbCk7CiAgICAgICAgIAotICAgICAgICBvbGRDb2RlQmxvY2sgPSBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOjpkZWFjdGl2YXRlQW5kVW53cmFwKGV4ZWN1dGFibGUtPm1fZXZhbENvZGVCbG9j
ay5nZXQoKSk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPm1fZXZhbENvZGVCbG9jay5zZXRNYXlCZU51
bGwodm0sIHRoaXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3RpdmF0ZShj
b2RlQmxvY2spKTsKKyAgICAgICAgb2xkQ29kZUJsb2NrID0gZXhlY3V0YWJsZS0+cmVwbGFjZUNv
ZGVCbG9ja1dpdGgodm0sIGNvZGVCbG9jayk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgCkBAIC0xNjIsMTYgKzE2MCw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENv
ZGUoVk0mIHZtLCBDb2RlQmxvY2sqIGdlbmVyaWNDb2RlQmxvY2ssIENvZGVUeXBlCiAgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPih0aGlzKTsKICAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRp
Y19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4oZ2VuZXJpY0NvZGVCbG9jayk7CiAgICAgICAgIAot
ICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAg
ICAgICAgIG9sZENvZGVCbG9jayA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZh
dGVBbmRVbndyYXAoZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpKTsKLSAgICAg
ICAgICAgIGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ2FsbC5zZXRNYXlCZU51bGwodm0sIHRo
aXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3RpdmF0ZShjb2RlQmxvY2sp
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0g
ICAgICAgICAgICBvbGRDb2RlQmxvY2sgPSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFj
dGl2YXRlQW5kVW53cmFwKGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0LmdldCgp
KTsKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0LnNldE1h
eUJlTnVsbCh2bSwgdGhpcywgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6d3JhcEFuZEFjdGl2
YXRlKGNvZGVCbG9jaykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAg
b2xkQ29kZUJsb2NrID0gZXhlY3V0YWJsZS0+cmVwbGFjZUNvZGVCbG9ja1dpdGgodm0sIGtpbmQs
IGNvZGVCbG9jayk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CkBAIC0xODcsNyArMTc2
LDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShWTSYgdm0sIENvZGVCbG9j
ayogZ2VuZXJpY0NvZGVCbG9jaywgQ29kZVR5cGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgYXV0byYgY2xlYXJhYmxlQ29kZVNldCA9IEhlYXA6OlNwYWNlQW5kU2V0OjpzZXRGb3IoKnN1
YnNwYWNlKCkpOworICAgIGF1dG8mIGNsZWFyYWJsZUNvZGVTZXQgPSBIZWFwOjpTY3JpcHRFeGVj
dXRhYmxlU3BhY2VBbmRTZXQ6OmNsZWFyYWJsZUNvZGVTZXRGb3IoKnN1YnNwYWNlKCkpOwogICAg
IGlmIChoYXNDbGVhcmFibGVDb2RlKHZtKSkKICAgICAgICAgY2xlYXJhYmxlQ29kZVNldC5hZGQo
dGhpcyk7CiAgICAgZWxzZQpAQCAtMjI1LDIzICsyMTQsMjMgQEAgYm9vbCBTY3JpcHRFeGVjdXRh
YmxlOjpoYXNDbGVhcmFibGVDb2RlKFZNJiB2bSkgY29uc3QKIAogICAgIGlmIChzdHJ1Y3R1cmUo
dm0pLT5jbGFzc0luZm8oKSA9PSBGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkgewogICAgICAg
ICBhdXRvKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRnVuY3Rpb25FeGVjdXRhYmxl
Kj4odGhpcyk7Ci0gICAgICAgIGlmIChleGVjdXRhYmxlLT5tX2NvZGVCbG9ja0ZvckNhbGwgfHwg
ZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpCisgICAgICAgIGlmIChleGVjdXRh
YmxlLT5laXRoZXJDb2RlQmxvY2soKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
fSBlbHNlIGlmIChzdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8oKSA9PSBFdmFsRXhlY3V0YWJsZTo6
aW5mbygpKSB7CiAgICAgICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxjb25zdCBF
dmFsRXhlY3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9ldmFsQ29k
ZUJsb2NrIHx8IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrKQorICAgICAgICBp
ZiAoZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2sgfHwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVC
bG9jaykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgfSBlbHNlIGlmIChzdHJ1Y3R1
cmUodm0pLT5jbGFzc0luZm8oKSA9PSBQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CiAgICAg
ICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxjb25zdCBQcm9ncmFtRXhlY3V0YWJs
ZSo+KHRoaXMpOwotICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrIHx8
IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKQorICAgICAgICBpZiAoZXhl
Y3V0YWJsZS0+bV9jb2RlQmxvY2sgfHwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9jaykK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgfSBlbHNlIGlmIChzdHJ1Y3R1cmUodm0p
LT5jbGFzc0luZm8oKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CiAgICAg
ICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxjb25zdCBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSo+KHRoaXMpOwotICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFt
Q29kZUJsb2NrCi0gICAgICAgICAgICB8fCBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jaworICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2sKKyAgICAg
ICAgICAgIHx8IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxvY2sKICAgICAgICAgICAgIHx8
IGV4ZWN1dGFibGUtPm1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI2MSwyNSArMjUwLDI1IEBAIENvZGVCbG9jayogU2Ny
aXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgSlNGdW5jCiAgICAgaWYgKGNsYXNzSW5mbyh2bSkgPT0gRXZhbEV4ZWN1dGFibGU6OmluZm8o
KSkgewogICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxFdmFsRXhl
Y3V0YWJsZSo+KHRoaXMpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5kID09IENvZGVGb3JD
YWxsKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWN1dGFibGUtPm1fZXZhbENvZGVCbG9j
ayk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjdXRhYmxlLT5tX2NvZGVCbG9jayk7CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFmdW5jdGlvbik7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBFdmFsQ29kZUJsb2NrOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGV4
ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLmdldCgpLCBzY29wZSkpOworICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgRXZhbENvZGVCbG9jazo6Y3JlYXRlKHZt
LCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9jaygpLCBzY29wZSkpOwog
ICAgIH0KIAogICAgIGlmIChjbGFzc0luZm8odm0pID09IFByb2dyYW1FeGVjdXRhYmxlOjppbmZv
KCkpIHsKICAgICAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8UHJv
Z3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBD
b2RlRm9yQ2FsbCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjdXRhYmxlLT5tX3Byb2dy
YW1Db2RlQmxvY2spOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9jb2Rl
QmxvY2spOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCghZnVuY3Rpb24pOwotICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlKHZtLCBl
eGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwg
c2NvcGUpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIFByb2dyYW1D
b2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+dW5saW5rZWRDb2Rl
QmxvY2soKSwgc2NvcGUpKTsKICAgICB9CiAKICAgICBpZiAoY2xhc3NJbmZvKHZtKSA9PSBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CiAgICAgICAgIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhp
cyk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWN1dGFibGUtPm1fY29kZUJsb2NrKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJs
ZSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNj
b3BlKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnVubGlua2Vk
Q29kZUJsb2NrKCksIHNjb3BlKSk7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlQoY2xhc3NJ
bmZvKHZtKSA9PSBGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSk7CkBAIC01MzUsNCArNTI0LDYy
IEBAIHVuc2lnbmVkIFNjcmlwdEV4ZWN1dGFibGU6OmVuZENvbHVtbigpIGNvbnN0CiAgICAgcmV0
dXJuIDA7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Cit2b2lkIFNjcmlwdEV4ZWN1
dGFibGU6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZp
c2l0b3ImIHZpc2l0b3IsIENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIEFTU0VSVChjb2Rl
QmxvY2spOworICAgIGNvZGVCbG9jay0+cHJvcGFnYXRlVHJhbnNpdGlvbnMobG9ja2VyLCB2aXNp
dG9yKTsKKyAgICBjb2RlQmxvY2stPmRldGVybWluZUxpdmVuZXNzKGxvY2tlciwgdmlzaXRvcik7
Cit9CisKK3RlbXBsYXRlIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6cnVuQ29uc3RyYWludChjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBBYnN0cmFjdFNsb3RWaXNpdG9yJiwgQ29kZUJsb2NrKik7
Cit0ZW1wbGF0ZSB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgU2xvdFZpc2l0b3ImLCBDb2RlQmxvY2sqKTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDb2RlQmxvY2tF
ZGdlKFZpc2l0b3ImIHZpc2l0b3IsIENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIEFTU0VS
VChjb2RlQmxvY2spOworCisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2st
Pm1fbG9jayk7CisKKyAgICBpZiAoY29kZUJsb2NrLT5zaG91bGRWaXNpdFN0cm9uZ2x5KGxvY2tl
ciwgdmlzaXRvcikpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2Nr
KTsKKworICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBl
KCkpKSB7CisgICAgICAgIC8vIElmIHdlIGpldHRpc29uIG91cnNlbHZlcyB3ZSdsbCBpbnN0YWxs
IG91ciBhbHRlcm5hdGl2ZSwgc28gbWFrZSBzdXJlIHRoYXQgaXQKKyAgICAgICAgLy8gc3Vydml2
ZXMgR0MgZXZlbiBpZiB3ZSBkb24ndC4KKyAgICAgICAgdmlzaXRvci5hcHBlbmQoY29kZUJsb2Nr
LT5tX2FsdGVybmF0aXZlKTsKKyAgICB9CisKKyAgICAvLyBOT1RFOiBUaGVyZSBhcmUgdHdvIHNp
ZGVzIHRvIHRoaXMgY29uc3RyYWludCwgd2l0aCBkaWZmZXJlbnQgcmVxdWlyZW1lbnRzIGZvciBj
b3JyZWN0bmVzcy4KKyAgICAvLyBCZWNhdXNlIGV2ZXJ5dGhpbmcgaXMgdWx0aW1hdGVseSBwcm90
ZWN0ZWQgd2l0aCB3ZWFrIHJlZmVyZW5jZXMgYW5kIGpldHRpc29uaW5nLCBpdCdzCisgICAgLy8g
YWx3YXlzICJPSyIgdG8gY2xhaW0gdGhhdCBzb21ldGhpbmcgaXMgZGVhZCBwcmVtYXR1cmVseSBh
bmQgaXQncyAiT0siIHRvIGtlZXAgdGhpbmdzIGFsaXZlLgorICAgIC8vIEJ1dCBib3RoIGNob2lj
ZXMgY291bGQgbGVhZCB0byBiYWQgcGVyZiAtIGVpdGhlciByZWNvbXAgY3ljbGVzIG9yIGxlYWtz
LgorICAgIC8vCisgICAgLy8gRGV0ZXJtaW5pbmcgQ29kZUJsb2NrIGxpdmVuZXNzOiBUaGlzIHBh
cnQgaXMgdGhlIG1vc3QgY29uc2VxdWVudGlhbC4gV2Ugd2FudCB0byBrZWVwIHRoZQorICAgIC8v
IG91dHB1dCBjb25zdHJhaW50IGFjdGl2ZSBzbyBsb25nIGFzIHdlIHRoaW5rIHRoYXQgd2UgbWF5
IHlldCBwcm92ZSB0aGF0IHRoZSBDb2RlQmxvY2sgaXMKKyAgICAvLyBsaXZlIGJ1dCB3ZSBoYXZl
bid0IGRvbmUgaXQgeWV0LgorICAgIC8vCisgICAgLy8gTWFya2luZyBTdHJ1Y3R1cmVzIGlmIHBy
b2ZpdGFibGU6IEl0J3MgaW1wb3J0YW50IHRoYXQgd2UgZG8gYSBwYXNzIG9mIHRoaXMuIExvZ2lj
YWxseSwgdGhpcworICAgIC8vIHNlZW1zIGxpa2UgaXQgaXMgYSBjb25zdHJhaW50IG9mIENvZGVC
bG9jay4gQnV0IHdlIGhhdmUgYWx3YXlzIGZpcnN0IHJ1biB0aGlzIGFzIGEgcmVzdWx0CisgICAg
Ly8gb2YgdGhlIGVkZ2UgYmVpbmcgbWFya2VkIGV2ZW4gYmVmb3JlIHdlIGRldGVybWluZSB0aGUg
bGl2ZW5lc3Mgb2YgdGhlIENvZGVCbG9jay4gVGhpcworICAgIC8vIGFsbG93cyBhIENvZGVCbG9j
ayB0byBtYXJrIGl0c2VsZiBieSBmaXJzdCBwcm92aW5nIHRoYXQgYWxsIG9mIHRoZSBTdHJ1Y3R1
cmVzIGl0IHdlYWtseQorICAgIC8vIGRlcGVuZHMgb24gY291bGQgYmUgc3Ryb25nbHkgbWFya2Vk
LiAoVGhpcyBwYXJ0IGlzIGFsc28gY2FsbGVkIHByb3BhZ2F0ZVRyYW5zaXRpb25zLikKKyAgICAv
LworICAgIC8vIEFzIGEgd2VpcmQgY2F2ZWF0LCB3ZSBvbmx5IGZpeHBvaW50IHRoZSBjb25zdHJh
aW50cyBzbyBsb25nIGFzIHRoZSBDb2RlQmxvY2sgaXMgbm90IGxpdmUuCisgICAgLy8gVGhpcyBt
ZWFucyB0aGF0IHdlIG1heSBvdmVybG9vayBzdHJ1Y3R1cmUgbWFya2luZyBvcHBvcnR1bml0aWVz
IGNyZWF0ZWQgYnkgb3RoZXIgbWFya2luZworICAgIC8vIHRoYXQgaGFwcGVucyBhZnRlciB0aGUg
Q29kZUJsb2NrIGlzIG1hcmtlZC4gVGhpcyB3YXMgYW4gYWNjaWRlbnRhbCBwb2xpY3kgZGVjaXNp
b24gZnJvbSBhCisgICAgLy8gbG9uZyB0aW1lIGFnbywgYnV0IGl0IGlzIHByb2JhYmx5IE9LLCBz
aW5jZSBpdCdzIG9ubHkgd29ydGh3aGlsZSB0byBrZWVwIGZpeHBvaW50aW5nIHRoZQorICAgIC8v
IHN0cnVjdHVyZSBtYXJraW5nIGlmIHdlIHN0aWxsIGhhdmUgdW5tYXJrZWQgc3RydWN0dXJlcyBh
ZnRlciB0aGUgZmlyc3Qgcm91bmQuIFdlIGFsbW9zdAorICAgIC8vIG5ldmVyIHdpbGwgYmVjYXVz
ZSB3ZSB3aWxsIG1hcmstaWYtcHJvZml0YWJsZSBiYXNlZCBvbiB0aGUgb3duaW5nIGdsb2JhbCBv
YmplY3QgYmVpbmcKKyAgICAvLyBhbHJlYWR5IG1hcmtlZC4gV2UgbWFyayBpdCBqdXN0IGluIGNh
c2UgdGhhdCBoYWRuJ3QgaGFwcGVuZWQgeWV0LiBBbmQgaWYgdGhlIENvZGVCbG9jayBpcworICAg
IC8vIG5vdCB5ZXQgbWFya2VkIGJlY2F1c2UgaXQgd2Vha2x5IGRlcGVuZHMgb24gYSBzdHJ1Y3R1
cmUgdGhhdCB3ZSBkaWQgbm90IHlldCBtYXJrLCB0aGVuIHdlCisgICAgLy8gd2lsbCBrZWVwIGZp
eHBvaW50aW5nIHVudGlsIHRoZSBlbmQuCisgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChj
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKKyAgICBydW5Db25zdHJhaW50KGxvY2tlciwgdmlz
aXRvciwgY29kZUJsb2NrKTsKK30KKwordGVtcGxhdGUgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjp2
aXNpdENvZGVCbG9ja0VkZ2UoQWJzdHJhY3RTbG90VmlzaXRvciYsIENvZGVCbG9jayopOwordGVt
cGxhdGUgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENvZGVCbG9ja0VkZ2UoU2xvdFZpc2l0
b3ImLCBDb2RlQmxvY2sqKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKaW5kZXggNzVkYWVlNGI4ZjI4
YjViYzEwZTBlNjFjMjM2OTBlNjQ5MjA3NTE4My4uMDlhZjgxNDFmODNhODg0ZTA1OTYyYzA4NWQw
NjU4YzI3NzFiNzFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NyaXB0RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuaApAQCAtMTM5LDYgKzEzOSwxMiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRh
YmxlIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKIAogICAgIHN0YXRpYyBUZW1wbGF0ZU9iamVj
dE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXBJbXBsKHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0
ZU9iamVjdE1hcD4mIGRlc3QpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KKyAg
ICBzdGF0aWMgdm9pZCBydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZp
c2l0b3ImLCBDb2RlQmxvY2sqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgorICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q29kZUJsb2NrRWRnZShWaXNpdG9yJiwgQ29kZUJsb2NrKik7Cisg
ICAgdm9pZCBmaW5hbGl6ZUNvZGVCbG9ja0VkZ2UoVk0mLCBXcml0ZUJhcnJpZXI8Q29kZUJsb2Nr
PiYpOworCiAgICAgU291cmNlQ29kZSBtX3NvdXJjZTsKICAgICBJbnRyaW5zaWMgbV9pbnRyaW5z
aWMgeyBOb0ludHJpbnNpYyB9OwogICAgIGJvb2wgbV9kaWRUcnlUb0VudGVySW5Mb29wIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4
ZWN1dGFibGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRF
eGVjdXRhYmxlSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjODFiNWRmMDM2NzhjNGIwM2JjZGY2ZWVi
YWU0OTVkYTZmOGZmM2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlSW5saW5lcy5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGFibGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGlu
ZSB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OmZpbmFsaXplQ29kZUJsb2NrRWRnZShWTSYgdm0sIFdy
aXRlQmFycmllcjxDb2RlQmxvY2s+JiBjb2RlQmxvY2tFZGdlKQoreworICAgIGF1dG8qIGNvZGVC
bG9jayA9IGNvZGVCbG9ja0VkZ2UuZ2V0KCk7CisgICAgaWYgKCFjb2RlQmxvY2spCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghdm0uaGVhcC5pc01hcmtlZChjb2RlQmxvY2spKSB7CisgICAg
ICAgIGlmIChjb2RlQmxvY2stPnNob3VsZEpldHRpc29uRHVlVG9XZWFrUmVmZXJlbmNlKHZtKSkK
KyAgICAgICAgICAgIGNvZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9X
ZWFrUmVmZXJlbmNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZUJsb2NrLT5qZXR0
aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb09sZEFnZSk7CisgICAgICAgIGlmIChjb2RlQmxv
Y2sgPT0gY29kZUJsb2NrRWRnZS5nZXQoKSkKKyAgICAgICAgICAgIGNvZGVCbG9ja0VkZ2UuY2xl
YXIoKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggZTMyZGNiMGFkMzRiMjNiY2RhMjQ3MWEwM2VlOTJjYjUyMzMz
ODIzOC4uM2JiNDU4ZWU4ZTM2ZDZiNGUyNjVmZGI5YzE5M2EyZWRkMjJkZTA4MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgIkVy
cm9ySW5zdGFuY2UuaCIKICNpbmNsdWRlICJFdmFsQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uLmgiCi0jaW5jbHVkZSAiRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oIgogI2luY2x1
ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkZpbGVCYXNlZEZ1enplckFnZW50LmgiCiAjaW5j
bHVkZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKQEAgLTI5OCw3ICsyOTcsNiBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9v
bCogc3VjY2VzcykKICAgICBoYXNoTWFwQnVja2V0U2V0U3RydWN0dXJlLnNldCgqdGhpcywgSGFz
aE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT46OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
bnVsbHB0ciwganNOdWxsKCkpKTsKICAgICBoYXNoTWFwQnVja2V0TWFwU3RydWN0dXJlLnNldCgq
dGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleVZhbHVlPjo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwogICAgIGJpZ0ludFN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVs
bCgpKSk7Ci0gICAgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVN0cnVjdHVyZS5zZXQoKnRoaXMs
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0
ciwganNOdWxsKCkpKTsKIAogICAgIC8vIEVhZ2VybHkgaW5pdGlhbGl6ZSBjb25zdGFudCBjZWxs
cyBzaW5jZSB0aGUgY29uY3VycmVudCBjb21waWxlciBjYW4gYWNjZXNzIHRoZW0uCiAgICAgaWYg
KE9wdGlvbnM6OnVzZUpJVCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAx
ZTllMGI0OGMzMjIwNjJmZWU4OTY1MzVmNTExNWE1NjNjYTQ1Mzk1Li42NjU2OGYyOWZlMGJmZTNm
MDNlODA4ZmMxMjRmYmQ4NTJjYmM1ZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTM3Myw5ICszNzMsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogCiAgICAgRk9SX0VBQ0hf
SlNDX0RZTkFNSUNfSVNPX1NVQlNQQUNFKERFRklORV9EWU5BTUlDX0lTT19TVUJTUEFDRV9BQ0NF
U1NPUl9JTVBMKQogCi0gICAgQUxXQVlTX0lOTElORSBJc29DZWxsU2V0JiBleGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cygpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7IH0KLSAgICBBTFdBWVNfSU5MSU5FIElzb0Nl
bGxTZXQmIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoKSB7IHJldHVy
biBoZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnM7IH0KLQogICAg
IEFMV0FZU19JTkxJTkUgR0NDbGllbnQ6Oklzb1N1YnNwYWNlJiBjb2RlQmxvY2tTcGFjZSgpIHsg
cmV0dXJuIGNsaWVudEhlYXAuY29kZUJsb2NrU3BhY2U7IH0KIAogICAgIERFRklORV9EWU5BTUlD
X0lTT19TVUJTUEFDRV9BQ0NFU1NPUihldmFsRXhlY3V0YWJsZVNwYWNlKQpAQCAtNDQxLDcgKzQz
OCw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGlj
IERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaGFzaE1h
cEJ1Y2tldFNldFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBoYXNoTWFwQnVja2V0
TWFwU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGJpZ0ludFN0cnVjdHVyZTsKLSAg
ICBTdHJvbmc8U3RydWN0dXJlPiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3RydWN0dXJlOwog
CiAgICAgU3Ryb25nPEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcj4gbV9lbXB0eVByb3BlcnR5TmFt
ZUVudW1lcmF0b3I7CiAK
</data>
<flag name="review"
          id="484502"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>